Implementation of UDP Client-Server Communication using Sockets in C

 

Experiment 

Implementation of UDP Client-Server Communication using Sockets in C


Aim

To implement a simple UDP client-server program for sending and receiving messages.


Objective

  • To understand connectionless communication using UDP
  • To implement message passing between client and server
  • To compare UDP with TCP

Theory

What is UDP?

User Datagram Protocol (UDP) is a connectionless protocol:

  • No connection establishment
  • No guarantee of delivery
  • Faster than TCP
  • No ordering or retransmission

Key Difference from TCP

FeatureTCPUDP
Connection        Yes        No
Reliability        High        Low
Speed        Slower        Faster
Use Case        File transfer        Streaming, DNS

Working of UDP

  • No listen() or accept()
  • Data sent using sendto()
  • Data received using recvfrom()

Algorithm

Server

  1. Create socket
  2. Bind socket to port
  3. Receive message from client
  4. Send response
  5. Close socket

Client

  1. Create socket
  2. Send message to server
  3. Receive response
  4. Close socket

๐Ÿ’ป Program


๐Ÿ”น Server Program (UDP in C)

#include <stdio.h> #include <string.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 12345 int main() { int sockfd; char buffer[1024]; struct sockaddr_in server_addr, client_addr; socklen_t len; // Create socket sockfd = socket(AF_INET, SOCK_DGRAM, 0); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(PORT); // Bind bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)); printf("UDP Server is running...\n"); len = sizeof(client_addr); // Receive message recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr *)&client_addr, &len); printf("Client: %s\n", buffer); // Send response char *msg = "Hello from UDP server"; sendto(sockfd, msg, strlen(msg)+1, 0, (struct sockaddr *)&client_addr, len); close(sockfd); return 0; }

๐Ÿ”น Client Program (UDP in C)

#include <stdio.h> #include <string.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 12345 int main() { int sockfd; char buffer[1024]; struct sockaddr_in server_addr; socklen_t len; // Create socket sockfd = socket(AF_INET, SOCK_DGRAM, 0); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); char *msg = "Hello from UDP client"; // Send message sendto(sockfd, msg, strlen(msg)+1, 0, (struct sockaddr *)&server_addr, sizeof(server_addr)); len = sizeof(server_addr); // Receive response recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr *)&server_addr, &len); printf("Server: %s\n", buffer); close(sockfd); return 0; }

▶️ Compilation and Execution

gcc server.c -o server gcc client.c -o client

Run:

  • Terminal 1 → ./server
  • Terminal 2 → ./client

๐Ÿ“ŒOutput

Server

UDP Server is running... Client: Hello from UDP client

Client

Server: Hello from UDP server

Key Points

  • UDP is connectionless → no connect()
  • Uses:
    • sendto()
    • recvfrom()
  • Faster but unreliable
  • Suitable for:
    • Video streaming
    • Online gaming
    • DNS



๐Ÿงพ Result

The UDP client-server communication was successfully implemented and messages were exchanged without establishing a connection.

This experiment demonstrates connectionless communication using UDP sockets and highlights its speed and simplicity compared to TCP.

Comments

Popular posts from this blog

Networks Lab PCCSL507 Semester 5 KTU CS 2024 Scheme - Dr Binu V P

Analysis of HTTP Protocol using Wireshark

Study and Use of ifconfig Command