SERVER SIDE:
#include<stdio.h>
#include<netdb.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<errno.h>
int main(int argc,char **argv)
{
struct sockaddr_in saddr,caddr;
struct hostent *server;
int n,i,len,ssid,csid,pid,pi;
char wbuffer[1024],rbuffer[1024];
char
a[20][20]={"12312","23211","43211","32122","23122"};
char
b[20][20]={"12.12.12.12","33.22.22.22","45.34.22.33","23.33.11.22","64.45.3
2.54"};
float c;
if(argc<2)
fprintf(stderr,"port number not specified \n");
ssid=socket(AF_INET,SOCK_STREAM,0);
if(csid<0)
perror("socket failed \n");
bzero((char *) & saddr,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_port=htons(atoi(argv[1]));
saddr.sin_addr.s_addr=INADDR_ANY;
if(bind(ssid,(struct
sockaddr*)&saddr,sizeof(saddr))<0)
perror("socket bind \n");
listen(ssid,5);
len= sizeof (caddr);
while(1)
{
csid=accept(ssid,(struct sockaddr*)&caddr,&len);
if(csid<0)
perror("socket accept");
fprintf(stdout,"type message to client: \n");
pid=fork();
if(pid==0)
{
close(ssid);
bzero(rbuffer,1024);
n=read(csid,rbuffer,1024);
if(n==0)
perror("socket read \n");
else
fprintf(stdout,"message from client
%s\n",rbuffer);
for(i=0;i<5;i++)
{
if(!strncmp(a[i],rbuffer,5))
{
n=write(csid,b[i],1024);
break;
}
else if(!strncmp(b[i],rbuffer,5))
{
n=write(csid,a[i],5);
break;
}
else if(strncmp(b[i],rbuffer,5))
{
n=write(csid,"invalid no",10);
break;
}
}
exit(0);
}
else
close(csid);
}
}
CLIENT SIDE:
#iinclude<stdio.h>
#include<netdb.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<errno.h>
int main(int argc,char **argv)
{
struct sockaddr_in saddr;
struct hostent *server;
int n,ssid,csid,pid,pi;
char wbuffer[1024],rbuffer[1024];
char str[15];
if(argc<3)
fprintf(stderr,"parameter inadiquate \n");
csid=socket(AF_INET,SOCK_STREAM,0);
if(csid<0)
perror("socket failed \n");
bzero((char*)&saddr,sizeof(saddr));
server=gethostbyname(argv[1]);
saddr.sin_family=AF_INET;
saddr.sin_port=htons(atoi(argv[2]));
bcopy((char*)server->h_addr,(char*)&saddr.sin_addr.s_addr,server->h_length);
ssid=connect(csid,(struct sockaddr
*)&saddr,sizeof(saddr));
if(ssid<0)
perror("socket connected \n");
fprintf(stdout,"ENTER MESSAGE TO SERVER:\n");
bzero(wbuffer,1024);
fgets(wbuffer,1024,stdin);
n=write(csid,wbuffer,sizeof(wbuffer));
if(n==0)
perror("socket write");
bzero(rbuffer,1024);
n=read(csid,str,15);
if(n==0)
perror("socket read \n");
else
fprintf(stdout,"MESSAGE FROM SERVER:%s\n",str);
return(0);
OUTPUT:
SERVER SIDE:
[ME04@TELNET ~]$ cc arpser.c
[ME04@TELNET ~]$ ./a.out 9987
type message to client:
message from client 12.12.12.12
CLIENT SIDE:
[ME04@TELNET ~]$ cc arpcli.c
[ME04@TELNET ~]$ ./a.out
20.30.1.211 9987
ENTER MESSAGE TO SERVER:
12.12.12.12
MESSAGE FROM SERVER:12312☺
No comments:
Post a Comment