client and server programs for interaction between server and client processes using Internet Domain sockets

  • Post author:
  • Post category:OS
  • Post comments:0 Comments

bind() : The bind function can be used to bind the address on client and server.
connect() :The connect function can be used to provide a connection between client and server.
listen():The listen function used for to listen the request and receive messages from the client and server.

				
					Client Program: 
#include <stdio.h>
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <netdb.h> 
void error(char *msg) 
{ 
perror(msg); 
exit(0); 
} 
int main(int argc, char *argv[]) 
{ 
int sockfd, portno, n; 
struct sockaddr_in serv_addr; 
struct hostent *server; 
char buffer[256]; 
if (argc < 3) 
{
fprintf(stderr,"usage %s hostname port\n", argv[0]);
exit(0);
} 
portno = atoi(argv[2]); 
sockfd = socket(AF_INET, SOCK_STREAM, 0); 
if (sockfd < 0) 
error("ERROR opening socket"); 
server = gethostbyname(argv[1]);
if (server == NULL) { fprintf(stderr,"ERROR, no such host\n"); 
exit(0); 
}
bzero((char *) &serv_addr, sizeof(serv_addr)); 
serv_addr.sin_family = AF_INET; 
bcopy((char *)server->h_addr,(char *)&serv_addr.sin_addr.s_addr,server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) 
error("ERROR connecting"); 
printf("Please enter the message: "); 
bzero(buffer,256); 
fgets(buffer,255,stdin); 
n = write(sockfd,buffer,strlen(buffer)); 
if (n < 0) error("ERROR writing to socket"); 
bzero(buffer,256); 
n = read(sockfd,buffer,255); 
if (n < 0) 
error("ERROR reading from socket"); 
printf("%s\n",buffer); 
return 0; 
}
Server program 
#include <stdio.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
void error(char *msg) 
{ 
perror(msg); 
exit(1); 
}
int main(int argc, char *argv[]) 
{
int sockfd, newsockfd, portno, clilen; 
char buffer[256]; 
struct sockaddr_in serv_addr, cli_addr;
int n; 
if (argc < 2) 
{ 
fprintf(stderr,"ERROR, no port provided\n"); 
exit(1); 
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket"); 
bzero((char *) &serv_addr, sizeof(serv_addr)); 
portno = atoi(argv[1]); 
serv_addr.sin_family = AF_INET; 
serv_addr.sin_addr.s_addr = INADDR_ANY; 
serv_addr.sin_port = htons(portno); 
if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) 
error("ERROR on binding"); listen(sockfd,5); 
clilen = sizeof(cli_addr); 
newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); 
if (newsockfd < 0) error("ERROR on accept"); 
bzero(buffer,256); 
n = read(newsockfd,buffer,255); 
if (n < 0) error("ERROR reading from socket"); 
printf("Here is the message: %s\n",buffer); 
n = write(newsockfd,"I got your message",18); 
if (n < 0) 
error("ERROR writing to socket"); 
return 0;
}
				
			

Leave a Reply