├── README.md ├── client.c └── server.c /README.md: -------------------------------------------------------------------------------- 1 | # UDP-Client-Server-implementation-in-C 2 | 3 | A simple implementation of the UDP (User Datagram Protocol) client-server program in the C programming language. Here, both the client and server are going to communicate with each other by exchanging messages. 4 | 5 | Blog Post: [UDP Client-Server Implementation in C](https://idiotdeveloper.com/udp-client-server-implementation-in-c/)
6 | YouTube Video: [UDP Client Server implementation in C | Socket Programming ](https://youtu.be/1Tdr9LcJt0I) 7 | 8 | # Exceute the program 9 | Compile the program 10 |
11 | $ gcc server.c -o server
12 | $ gcc client.c -o client
13 | 
14 | 15 | Run the program 16 |
17 | $ ./server 4455
18 | $ ./client 4455
19 | 
20 | -------------------------------------------------------------------------------- /client.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int main(int argc, char **argv){ 10 | 11 | if (argc != 2) { 12 | printf("Usage: %s \n", argv[0]); 13 | exit(0); 14 | } 15 | 16 | char *ip = "127.0.0.1"; 17 | int port = atoi(argv[1]); 18 | 19 | int sockfd; 20 | struct sockaddr_in addr; 21 | char buffer[1024]; 22 | socklen_t addr_size; 23 | 24 | sockfd = socket(AF_INET, SOCK_DGRAM, 0); 25 | memset(&addr, '\0', sizeof(addr)); 26 | addr.sin_family = AF_INET; 27 | addr.sin_port = htons(port); 28 | addr.sin_addr.s_addr = inet_addr(ip); 29 | 30 | bzero(buffer, 1024); 31 | strcpy(buffer, "Hello, World!"); 32 | sendto(sockfd, buffer, 1024, 0, (struct sockaddr*)&addr, sizeof(addr)); 33 | printf("[+]Data send: %s\n", buffer); 34 | 35 | bzero(buffer, 1024); 36 | addr_size = sizeof(addr); 37 | recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr*)&addr, &addr_size); 38 | printf("[+]Data recv: %s\n", buffer); 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /server.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int main(int argc, char **argv){ 10 | 11 | if (argc != 2){ 12 | printf("Usage: %s \n", argv[0]); 13 | exit(0); 14 | } 15 | 16 | char *ip = "127.0.0.1"; 17 | int port = atoi(argv[1]); 18 | 19 | int sockfd; 20 | struct sockaddr_in server_addr, client_addr; 21 | char buffer[1024]; 22 | socklen_t addr_size; 23 | int n; 24 | 25 | sockfd = socket(AF_INET, SOCK_DGRAM, 0); 26 | if (sockfd < 0){ 27 | perror("[-]socket error"); 28 | exit(1); 29 | } 30 | 31 | memset(&server_addr, '\0', sizeof(server_addr)); 32 | server_addr.sin_family = AF_INET; 33 | server_addr.sin_port = htons(port); 34 | server_addr.sin_addr.s_addr = inet_addr(ip); 35 | 36 | n = bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); 37 | if (n < 0) { 38 | perror("[-]bind error"); 39 | exit(1); 40 | } 41 | 42 | bzero(buffer, 1024); 43 | addr_size = sizeof(client_addr); 44 | recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr*)&client_addr, &addr_size); 45 | printf("[+]Data recv: %s\n", buffer); 46 | 47 | bzero(buffer, 1024); 48 | strcpy(buffer, "Welcome to the UDP Server."); 49 | sendto(sockfd, buffer, 1024, 0, (struct sockaddr*)&client_addr, sizeof(client_addr)); 50 | printf("[+]Data send: %s\n", buffer); 51 | 52 | return 0; 53 | } 54 | --------------------------------------------------------------------------------