Showing posts with label SOCKET APPLICATION PROGRAM FOR ARP AND RARP. Show all posts
Showing posts with label SOCKET APPLICATION PROGRAM FOR ARP AND RARP. Show all posts

Tuesday, June 16, 2015

SOCKET APPLICATION PROGRAM FOR ARP AND RARP

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);