26.
Design UDP Client and server application to reverse
the given input sentence
UDP Server Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define SERV_PORT 9877
#define MAXLINE 4096
void reverse_string(char *str) {
int n = strlen(str);
for (int i = 0; i < n / 2; i++) {
char temp = str[i];
str[i] = str[n - i - 1];
str[n - i - 1] = temp;
int main() {
int sockfd;
char buf[MAXLINE];
struct sockaddr_in servaddr, cliaddr;
socklen_t len;
ssize_t n;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
bind(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
for (;;) {
len = sizeof(cliaddr);
n = recvfrom(sockfd, buf, MAXLINE, 0, (struct sockaddr *) &cliaddr, &len);
buf[n] = '\0';
reverse_string(buf);
sendto(sockfd, buf, n, 0, (struct sockaddr *) &cliaddr, len);
return 0;
}
UDP Client Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#define SERV_PORT 9877
#define MAXLINE 4096
int main(int argc, char **argv) {
int sockfd;
char sendline[MAXLINE], recvline[MAXLINE + 1];
struct sockaddr_in servaddr;
socklen_t servlen = sizeof(servaddr);
ssize_t n;
if (argc != 2) {
fprintf(stderr, "usage: %s <IPaddress>\n", argv[0]);
exit(1);
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
while (fgets(sendline, MAXLINE, stdin) != NULL) {
sendto(sockfd, sendline, strlen(sendline), 0, (struct sockaddr *) &servaddr, servlen);
n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL);
recvline[n] = '\0';
fputs(recvline, stdout);
close(sockfd);
return 0;
Output:
How to execute it???
1. Compile and run the server code in one terminal.
2. Open another terminal and compile and run the code
3. Enter any string in the client side terminal.
4. THank you.