File Transfer TCP Algorithm: Program 6
File Transfer TCP Algorithm: Program 6
Program 7
Design a TCP concurrent server to convert a given text into upper case using
multiplexing system call “select”
1. Create TCP i.e Listening socket
2. Create a UDP socket
3. Bind both socket to server address.
4. Initialize a descriptor set for select and calculate maximum of 2
descriptor for which we will wait
5. Call select and get the ready descriptor(TCP or UDP)
6. Handle new connection if ready descriptor is of TCP OR receive data
gram if ready descriptor is of UDP
Server.c
// Server program
#include <arpa/inet.h>
#include <errno.h>
#include <netinet/in.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
if (x > y)
return x;
else
return y;
int main()
char buffer[MAXLINE];
pid_t childpid;
fd_set rset;
ssize_t n;
socklen_t len;
const int on = 1;
void sig_chld(int);
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
listen(listenfd, 10);
FD_ZERO(&rset);
FD_SET(listenfd, &rset);
FD_SET(udpfd, &rset);
len = sizeof(cliaddr);
close(listenfd);
bzero(buffer, sizeof(buffer));
close(connfd);
exit(0);
}
close(connfd);
}
len = sizeof(cliaddr);
bzero(buffer, sizeof(buffer));
puts(buffer);
}
}
}
TCP_Client.c
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
int main()
int sockfd;
char buffer[MAXLINE];
int n, len;
// Creating socket file descriptor
exit(0);
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
sizeof(servaddr)) < 0) {
}
memset(buffer, 0, sizeof(buffer));
strcpy(buffer, "Hello Server");
puts(buffer);
close(sockfd);
}
UDP_client.c
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/socket.h>
#include <sys/types.h>
int main()
{
int sockfd;
char buffer[MAXLINE];
int n, len;
exit(0);
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
servaddr.sin_addr.s_addr = inet_addr(INADDR_ANY);
sizeof(servaddr));
&len);
puts(buffer);
close(sockfd);
return 0;