/***** Server.c *****/
#include <stdio.h>
#include <errno.h>
#include <signal.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <netdb.h>
int main (int argc, char *argv[])
{
int sockfd,new_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int sin_size,portnumber;
char hello[256]; //""Hello! Are You Fine? "";
strcpy (hello, argv[3]);
if(argc!=4)
{
fprintf(stderr,"Usage:%s portnumbera ",argv[0]);
exit(1);
}
if((portnumber=atoi(argv[2]))<0)
{
fprintf(stderr, "Usage:%s portnumbera ", argv[0]);
exit(1);
}
if((sockfd=socket(AF_INET,SOCK_STREAM, IPPROTO_TCP))==-1)
{
fprintf(stderr, "Socket error:%s a" ,strerror(errno));
exit(1);
}
memset(&server_addr, 0, sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portnumber);
server_addr.sin_addr.s_addr=INADDR_ANY;
// if (inet_pton (AF_INET, argv[1], &server_addr.sin_addr) <= 0)
// {
// printf ("Wrong source IP address!/n");
// exit (0);
// }
if(bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr))==-1)
{
fprintf(stderr, "Bind error:%s a", strerror(errno));
exit(1);
}
if(listen(sockfd,5)==-1)
{
fprintf(stderr, "Listen error:%s a", strerror(errno));
exit(1);
}
while(1)
{
sin_size=sizeof(struct sockaddr);
if((new_fd=accept(sockfd, (struct sockaddr*)&client_addr, &sin_size))==-1)
{
fprintf(stderr, "Accept error:%s a", strerror(errno));
exit(1);
}
fprintf(stderr, "Server get connection from %s ",
inet_ntoa(client_addr.sin_addr));
if(write(new_fd,hello,strlen(hello))==-1)
{
fprintf(stderr, "Write Error:%s ", strerror(errno));
exit(1);
}
close(new_fd);
}
close(sockfd);
exit(0);
}
/***** Client.c *****/
/*********** Client.c ************/
#include <stdio.h>
#include <errno.h>
#include <signal.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <netdb.h>
int main(int argc, char *argv[])
{
int sockfd;
char buffer[1024];
struct sockaddr_in server_addr;
struct hostent *host;
int portnumber,nbytes;
if(argc!=3)
{
fprintf(stderr, "Usage:%s hostname portnumbera ", argv[0]);
exit(1);
}
if((host=gethostbyname(argv[1]))==NULL)
{
fprintf(stderr, "Gethostname error ");
exit(1);
}
if((portnumber=atoi(argv[2]))<0)
{
fprintf(stderr, "Usage:%s hostname portnumbera ", argv[0]);
exit(1);
}
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
fprintf(stderr, "Socket Error:%sa ", strerror(errno));
exit(1);
}
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portnumber);
server_addr.sin_addr=*((struct in_addr *)host->h_addr);
if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
{
fprintf(stderr, "Connect Error:%sa ", strerror(errno));
exit(1);
}
if((nbytes=read(sockfd,buffer,1024))==-1)
{
fprintf(stderr, "Read Error:%s ", strerror(errno));
exit(1);
}
buffer[nbytes]='/n';
printf( "I have received:%s ", buffer);
close(sockfd);
exit(0);
}