UDP Server-Client Implementation in C

Learn via video courses
Topics Covered

Overview

Instead of establishing a connection with the server like in TCP, the client in UDP just sends a datagram. Similarly to this, the server only needs to wait for datagrams to come and need not accept a connection. When datagrams arrive, they already contain the sender's address, which the server utilizes to relay data to the right client. TCP and UDP are the two main communication protocols. Data is transported between the client and the server using these protocols. The Ubuntu operating system, which offers a very adaptable environment for developing UDP client-server programs, will be used for this work.

udp-client-server-programs

What is UDP?

Use of the User Datagram Protocol, also known as UDP, is widespread on the Internet for time-sensitive transmissions like DNS lookups and video playback. By not explicitly establishing a connection before data is sent, it speeds up communications. This enables the delivery of data incredibly quickly, but it can also result in packets being lost in transit, opening up the potential for DDoS assaults and other forms of exploitation. UDP is a defined procedure for transferring data between two computers connected by a network, like all networking protocols. In contrast to other protocols, UDP completes this task in a straightforward manner: it delivers packets (units of data transmission) straight to the destination computer without first establishing a connection, specifying the order of such packets, or verifying that they arrived as intended. The term "datagram" is used to describe UDP packets.

As a more popular transport protocol, UDP is quicker but less dependable than TCP. Through an automatic procedure known as a "handshake," the two computers in a TCP communication first create a connection. The actual transfer of data packets between the two computers won't happen until after this handshake is complete. This procedure is skipped during UDP communications. Alternatively, two computers can just start communicating by exchanging data.

TCP communications also validate that data packets arrive in the intended order and specify the order in which they should be received. TCP mandates that a packet is resent if it is not received, such as when there is network congestion in the intermediary network. None of these features are present in UDP communications.

Some advantages are produced by these distinctions. Data can be transferred significantly more quickly using UDP than using TCP since it doesn't require a "handshake" or check to see whether the data is correct.

This rapidity, nevertheless, results in compromises. A UDP datagram will not be sent again if it is lost in transit. Therefore, UDP-using applications need to be able to endure errors, loss, and duplication.

Technically speaking, such packet loss is less of a problem with UDP as it is a result of how the Internet is designed. Due to the impractical amount of additional memory required, the majority of network routers do not by default conduct packet sequencing and arrival confirmation. When an application needs it, TCP is a technique to close this gap.)

In connections that must be completed quickly, UDP is frequently employed since it is preferable to wait than to infrequently lose packets. Due to the fact that both voice and video communications are time-sensitive and built to withstand some degree of loss, they are both sent via this protocol. For instance, UDP is utilized by many internet-based telephone services that use VOIP (voice over IP), which is a type of communication. This is due to the fact that staticky phone conversations are better than crystal-clear but choppy ones.

The best protocol for online gaming is UDP because of this. In a similar way, DNS servers function using UDP since they must be both quick and effective.

Implementation of UDP Client Server Program

Server

Following steps might be used to summarise the full procedure:

UDP server

  1. UDP socket creation.
  2. Connect the socket to the server's address.
  3. Await the arrival of the client's datagram packet.
  4. The datagram packet is processed, and a response is sent to the client.
  5. Returning to Step 3.

UDP Client

  1. Construct a UDP socket.
  2. To the server, send a message.
  3. Hold off until you get a response from the server.
  4. Respond to the message and, if necessary, return to step 2.
  5. Terminate the socket descriptor.

Necessary Functions

Arguments:  

  • type - the kind of socket that should be generated (SOCK STREAM for TCP and SOCK DGRAM for UDP).
  • protocol - The socket will use this protocol.
  • 0 indicates to use of the address family's default protocol.

Arguments:

  • sockfd, which is the file descriptor for a socket that will be bonded
  • Structure, where the address to be tied to, is supplied (addr)
  • the size of the addr structure in addrlen

Arguments:

  • Arguments: sockfd - the socket's file descriptor;
  • buf - the application buffer containing the data to be transferred
  • Size of the application buffer (len)
  • flags - Bitwise OR of socket behavior flags
  • Structure called dest addr that contains the destination's address
  • the dest addr structure's addrlen value

Arguments:

  • the socket's file descriptor (sockfd),
  • the application buffer (buf),
  • the size of the application buffer (len),
  • flags - Bitwise OR of flags to change the behavior of the socket
  • the structure src addr, which contains the source address, is returned.
  • the variable addrlen returns the size of the src addr structure.

Arguments:

  • File descriptor (fd)
  • The paradigm is illustrated in the code below by showing the exchange of a single greeting message between the server and client.

Filename: UDPServer.c

Filename: UDPClient.c

Output:

Run the UDP Client-Server Program

The executable files will now be launched after we have successfully compiled both the server.c and the client.c.

In the Terminal, use the following command to assemble the files.

I'm hoping that the executable files will be built without any hiccups or errors.

To start the server application, enter the following command in a Terminal.

The client software can then be launched by entering the command shown below.

How is UDP different from TCP?

The two Internet protocols that are most frequently used are Transmission Control Protocol (TCP) and User Datagram Protocol (UDP). As a connection-oriented protocol, TCP allows for the bidirectional transfer of data after one has been made. The simpler, connectionless Internet protocol UDP, on the other hand, is more user-friendly. The UDP protocol sends several messages as chunks of packets.

What is TCP?

TCP is a connection-oriented transport layer protocol. It offers a dependable network connection and secure data transmission between the linked machines. The data is sent after a secure connection has been established. TCP uses data blocks to transport data from one device to another. Although data transmission is slow, the system offers many capabilities, including flow control, error control, and congestion control. The TCP header, which has a size of 20–60 bytes, comprises a number of bits of data to increase reliability. But the ceiling has been raised. TCP is used by protocols like HTTP, FTP, etc. for safe data transmission over networks because of its dependability.

Pros of TCP:

  • The TCP protocol enables users to connect numerous computers kinds.
  • Many different routing protocols are supported by it.
  • Operating system independence means it can function alone.
  • Utilizing the TCP protocol, businesses may collaborate online.
  • A client-server architecture with excellent scalability underpins the TCP/IP concept.
  • Many routing protocols are supported by TCP.

Cons of TCP:

  • TCP does not support broadcast or multicast requests from users.
  • It lacks block boundaries. So, a user must independently generate this.
  • It includes a number of functions that a user might not need. As a result, it wastes the operational network's time, resources, or bandwidth.
  • There is no assurance of packet delivery provided by the transport layer in the TCP paradigm.
  • In TCP/IP, it is difficult to replace a protocol.
  • Interfaces, services, and protocols are not clearly segregated in TCP.

What is UDP?

UDP is a connectionless transport layer protocol. It allows for rapid data transmission through a network between the connected units. In UDP, there is no cost associated with setting up, keeping, and closing connections. It is mostly used to send real-time data in situations when transmission delays are not an option. Continuous data streams are used by UDP to transfer data from one device to another. The UDP header has a constant size of 8 bytes. Although it is faster in speed, it is unreliable. UDP is used for effective data transmission over the network by protocols like DNS, DHCP, RIP, and others due to its fast transmission rate.

Pros Of UDP:

  • Users of UDP are never bound to a connection-based communication mechanism.
  • Any distributed program that uses UDP continues to have a low startup delay.
  • Additionally, broadcasting and multicasting are available.
  • The UDP packet's recipient has the ability to manage it. The block borders are also included.
  • UDP has the ability to restore lost data.
  • It allows for quick transactions like a DNS lookup.
  • Bandwidth use is high for UDP. As a result, packet loss occurs.

Cons of UDP:

  • In a UDP protocol, a packet might not reach its intended recipient or might reach twice.
  • It lacks congestion and flow control. Therefore, it is the responsibility of a user application to implement this protocol.
  • With the UDP protocol, the routers continue to be rather irresponsible. They never send again in the event of a collision.
  • While UDP doesn't experience packet loss, UDP does.

How is UDP different from TCP?

TCPUDP
It is a communications protocol that is used to send data between systems over a network. This method transmits data in the form of packets. Error-checking is a part of it, and it also ensures delivery and maintains the order of the data packets.Similar to the TCP protocol, except that data recovery and error-checking is not guaranteed. Regardless of any problems on the receiving end, if you use this protocol, the data will be transferred continually.
TCP is a protocol that focuses on connections.Unconnected transfer protocol (UDP).
TCP is more dependable since it supports error checking and ensures data delivery to the destination router.On the other hand, UDP only offers the most fundamental checksum-based error-checking capability. As a result, unlike TCP, data delivery to the destination via UDP cannot be guaranteed.
Data is delivered using TCP in a specific order, ensuring that packets reach the recipient in the correct order.Since there is no data sequencing in UDP, the application layer must handle ordering implementation.
When compared to UDP, TCP performs less effectively and more slowly. Furthermore, TCP is heavier than UDP.TCP is slower than UDP, which is more effective.
In the event that a packet is lost or needs to be resent, TCP allows for the possibility of retransmission.In UDP, packets cannot be retransmitted.
Data sequencing is made possible by a feature of the Transmission Control Protocol (TCP). This suggests that packets arrive at the destination in the order they were dispatched.Data sequencing does not exist in UDP. If required, the order must be managed by the application layer.
A variable-length (20–60 bytes) TCP header is used.The header for UDP is a constant length of 8 bytes.
SYN, ACK, and SYNACK handshakes are utilized.It is a connectionless protocol, hence a handshake is not necessary.
TCP is unable to support broadcasting.UDP facilitates broadcasting.
TCP is used by HTTP, HTTPS, FTP, SMTP, and Telnet.UDP is used by DNS, DHCP, TFTP, SNMP, RIP, and VoIP.

Conclusion

  • A client can connect to a server and transmit just one message using the client-server program that is shown below. The server responds with the identical message in all caps, and then the connection is lost.
  • Because UDP is a connection-less protocol, unlike TCP, it can be implemented more easily because it doesn't require any handshaking before transmitting or receiving data.
  • An easy transport-layer protocol is UDP. The application publishes a message to a UDP socket, wraps it in a UDP datagram, wraps it again in an IP datagram, and sends it to the destination. There is no assurance that a UDP will reach its target, that the datagrams will arrive in the same order throughout the network, or that they will arrive only once.
  • One of the most popular communication paradigms in networked systems is the client-server approach. Typically, clients only talk to one server at a time. From the standpoint of a server, it is common for a server to be in communication with several clients at once. Prior to establishing a connection, the server does not need to be aware of the client's address (or even that the client even exists); but, the client must be aware of both the server's existence and its address. Multiple layers of network protocols are used to connect clients and servers. The TCP/IP protocol suite will be the main topic of this course.
  • In contrast to UDP, which lacks connections, TCP is connection-oriented. Their varying speeds are a significant distinction. Compared to TCP, UDP is substantially quicker. Because it is quicker and easier to use, the protocol is far more powerful. However, unlike UDP, TCP permits the retransmission of data packets that have been lost. Another significant distinction between TCP and UDP is that UDP does not support end-to-end conversations. In contrast, TCP transmits data from the user to the server in the desired order (and vice versa). A receiver's readiness isn't actually verified by UDP either.