├── 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 |
--------------------------------------------------------------------------------