Professional Documents
Culture Documents
All Exercises of CN
All Exercises of CN
PROGRAMS
CONTENTS:
1.SOCKET CREATION
2.BINDING THE SOCKET
3.LISTEN SYSTEM CALL
4.ACCEPT SYSTEM CALL
5.CLIENT/SERVER CHAT APPLICATION USING
TCP
6. TCP ECHO CLIENT/SERVER
7. CLIENT/SERVER CHAT APPLICATION USING
UDP
8. UDP ECHO CLIENT/SERVER
9.BIT STUFFING AND DE-BIT STUFFING
10.CYCLIC REDUNANCY CHECK
11.SELECTIVE REPEAT PROTOCOL
12.GO BACK-N PROTOCOL
13.STOP AND WAIT PROTOCOL
14.DNS PROTOCOL
15.BORDER GATEWAY PROTOCOL
16.OSPF PROTOCOL
17.DISTANCE VECTOR ROUTING
18.MULTICASTING
3
EX:1-SOCKET CREATION
PROGRAM:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/socket.h>
#include<arpa/inet.h>
int main()
{
int sockfd1,sockfd2;
sockfd1=socket(AF_INET,SOCK_STREAM,0);
sockfd2=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd1==-1)
{
printf("socket1 is not created");
}
else
{
printf("socket1 is created and socket1 file descriptor value is %d\n",sockfd1);
}
if(sockfd2==-1)
{
printf("socket2 is created");
}
else
{
printf("socket2 is created and socket2 file descriptor value is %d\n",sockfd2);
}
}
OUTPUT:
[cseb332@Insat5E ~]$ cc socket.c
[cseb332@Insat5E ~]$ ./a.out
socket1 is created and socket1 file descriptor value is 3
socket2 is created and socket2 file descriptor value is 4
#include<netinet/in.h>
#define PORTNO 5990
int main()
{
int sockfd,i=PORTNO;
struct sockaddr_in myaddr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation error");
}
else
{
printf("socket is created\n");
}
//bzero(&myaddr,sizeof (myaddr));
myaddr.sin_family=AF_INET;
myaddr.sin_port=htons(PORTNO);
myaddr.sin_addr.s_addr=INADDR_ANY;
memset(&(myaddr.sin_zero),'\0',8);
if(bind(sockfd,(struct sockaddr *)&myaddr,sizeof(struct sockaddr))!=-1)
{
printf("socket is binded at point %d\n",i);
}
else
{
printf("binding error");
}
}
OUTPUT:
[cseb332@Insat5E ~]$ cc new.c
[cseb332@Insat5E ~]$ ./a.out
socket is created
socket is binded at point 5990
OUTPUT:
[cseb332@Insat5E ~]$ cc listen.c
[cseb332@Insat5E ~]$ ./a.out
server is in listening mode
#include<sys/socket.h>
#include<netinet/in.h>
#define PORT 4627
#define BACKLOG 8
main() {
int fd,fd2;
struct sockaddr_in server;
struct sockaddr_in client;
int sin_size;
if((fd=socket(AF_INET,SOCK_STREAM,0))==-1) {
printf("socket() error\n");
//exit(-1);
}
server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr=INADDR_ANY;
bzero(&(server.sin_zero),8);
if(bind(fd,(struct sockaddr*)&server,sizeof(struct sockaddr))!=-1)
{
printf("bind()error\n");
//exit(-1);
}
else if(listen(fd,BACKLOG)!=-1)
{
printf("listen()error\n");
//exit(-1);
}
printf("server is in accept mode \n ");
//while(1)
//{
sin_size=sizeof( struct sockaddr);
if((fd2 = accept(fd,(struct sockaddr *)&client,&sin_size))!=-1){
printf("accept() error\n");
//exit(-1);
}
else
{
printf(" Server is in accept mode");
printf(" You got a connection from %s\n" , inet_ntoa(client.sin_addr));
//close(fd2);
}
//close(fd2);
OUTPUT:
[cseb332@Insat5E ~]$ cc accccept.c
[cseb332@Insat5E ~]$ ./a.out
bind()error
server is in accept mode
Server is in accept mode You got a connection from 20.146.186.0
if((sdl=accept(sd,(struct sockaddr*)&cli,&si))<0)
{
printf("\n\t\t errore in accept");
//return 0;
}
do
{
recv(sdl,&msg,50,0);
printf("\n\t client message received:%s\n",msg);
printf("\n\t enter the server string");
scanf("%s",buf);
send(sdl,buf,50,0);
//recv(sdl,&msg,50,0);
//printf("\n\t client message received:%s\n",msg);
}while(strcmp(buf,"exit")!=0);
close(sd);
}
CLIENT PROGRAM:
#include<stdio.h>
#include<netdb.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define MAXDATASIZE 100
main()
{
int sd,i=0,len;
struct sockaddr_in ser;
char msg[50],rmsg[50];
char buf[MAXDATASIZE];
if((sd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("\n\terror in socket");
return 0;
}
bzero(&ser,sizeof(ser));
ser.sin_family=AF_INET;
ser.sin_port=htons(2107);
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(connect(sd,(struct sockaddr *) &ser,sizeof(ser))<0)
{
printf("\n\t error in connect");
10
//exit(-1);
}
do
{
printf("\n\t enter the string:\n");
scanf("%s",buf);
send(sd,buf,50,0);
recv(sd,rmsg,50,0);
printf("\n\t\t server message:%s",rmsg);
}while(strcmp(buf,"exit")!=0);
close(sd);
}
OUTPUT:
SERVER:
[cseb332@Insat5E ~]$ cc tcpser.c
[cseb332@Insat5E ~]$ ./a.out
client message received:hi
enter the server string:helllooo
client message received:gudmorn
enter the server string:yes,gudmrng
client message received:bye
enter the server string:bye
client message received:exit
enter the server string:exit
CLIENT:
[cseb332@Insat5E ~]$ ./a.out
enter the string:hi
server message:helllooo
enter the string:gudmorn
server message:yes,gudmrng
enter the string:bye
server message:bye
11
{
recv(sdl,msg,50,0);
//printf("\n\t client message received:%s\n",msg);
//printf("\n\t enter the server string");
//scanf("%s",buf);
send(sdl,msg,50,0);
//recv(sdl,&msg,50,0);
//printf("\n\t client message received:%s\n",msg);
}while(strcmp(buf,"exit")!=0);
close(sd);
}
CLIENT PROGRAM:
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define MAXDATASIZE 100
main()
{
int sd,i=0,len;
struct sockaddr_in ser;
char msg[50],rmsg[50];
char buf[MAXDATASIZE];
if((sd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("\n\terror in socket");
return 0;
}
bzero(&ser,sizeof(ser));
ser.sin_family=AF_INET;
ser.sin_port=htons(2549);
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(connect(sd,(struct sockaddr *) &ser,sizeof(ser))<0)
{
printf("\n\t error in connect");
//exit(-1);
}
do
{
printf("\n\t enter the string:\n");
scanf("%s",buf);
13
send(sd,buf,50,0);
recv(sd,rmsg,50,0);
printf("\n\t\t server message received from client before:%s",rmsg);
}while(strcmp(buf,"exit")!=0);
close(sd);
}
OUTPUT:
SERVER:
[cseb332@Insat5E ~]$ cc ssseeerrr.c
[cseb332@Insat5E ~]$ ./a.out
[cseb332@Insat5E ~]$
CLIENT:
[cseb332@Insat5E ~]$ cc cccllliii.c
[cseb332@Insat5E ~]$ ./a.out
enter the string:hi
server message received from client before:hi
enter the string:hello
server message received from client before:hello
enter the string:i'mfine
server message received from client before:i'm fine
enter the string:exit
server message received from client before:exit
[cseb332@Insat5E~]$
CLIENT PROGRAM:
#include<stdio.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
main()
{
struct sockaddr_in server,client;
int s,n;
char b1[100],b2[100];
s=socket(AF_INET,SOCK_DGRAM,0);
server.sin_family=AF_INET;
server.sin_port=htons(3874);
server.sin_addr.s_addr=htonl(INADDR_ANY);
printf("\nClient ready....\n");
n=sizeof(server);
do
{
15
OUTPUT:
SERVER:
[cseb332@Insat5E ~]$ cc udpchatser.c
[cseb332@Insat5E ~]$ ./a.out
Echo Server ready,waiting for client....
client message received is:hello
enter the server string:hi
client message received is:exit
enter the server string:exit
[cseb332@Insat5E ~]$
CLIENT:
[cseb332@Insat5E ~]$ cc udpchatcliii.c
[cseb332@Insat5E ~]$ ./a.out
Client ready....
enter the string:hello
Server message received:hi
enter the string:exit
Server message received:exit
[cseb332@Insat5E ~]$
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
main()
{
struct sockaddr_in client,server;
int s,n;
char b1[100],b2[100];
s=socket(AF_INET,SOCK_DGRAM,0);
server.sin_family=AF_INET;
server.sin_port=htons(5620);
server.sin_addr.s_addr=htonl(INADDR_ANY);
bind(s,(struct sockaddr *)&server,sizeof(server));
printf("\nEcho Server ready,waiting for client....\n");
n=sizeof(client);
do
{
recvfrom(s,b1,sizeof(b1),0,(struct sockaddr *) &client,&n);
sendto(s,b1,sizeof(b1),0,(struct sockaddr *) &client,n);
}while(strcmp(b1,"end")!=0);
}
CLIENT PROGRAM:
#include<stdio.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
main()
{
struct sockaddr_in server,client;
int s,n;
char b1[100],b2[100];
s=socket(AF_INET,SOCK_DGRAM,0);
server.sin_family=AF_INET;
server.sin_port=htons(5620);
server.sin_addr.s_addr=htonl(INADDR_ANY);
printf("\nClient ready....\n");
n=sizeof(server);
do
{
17
printf("\nClient:");
gets(b2);
sendto(s,b2,sizeof(b2),0,(struct sockaddr *) &server,n);
recvfrom(s,b1,sizeof(b1),0,NULL,NULL);
printf("\nServer:%s",b1);
}while(strcmp(b2,end)!=0);
}
OUTPUT:
SERVER:
[cseb332@Insat5E ~]$ cc udpechoser.c
[cseb332@Insat5E ~]$ ./a.out
Echo Server ready,waiting for client....
CLIENT:
[cseb332@Insat5E ~]$ cc udpechocli.c
[cseb332@Insat5E ~]$ ./a.out
Client ready....
Client:hi
Server:hi
Client:hello
Server:hello
Client:fyn
Server:fyn
Client:end
Server:end
[cseb332@Insat5E ~]$
int main()
{
FILE *f1,*f2;
char c;
int count;
count=0;
f1=fopen("file1.dat","r");
f2=fopen("file2.dat","w");
while(!feof(f1))
{
c=fgetc(f1);
if(c=='1')
count++;
else
count=0;
if(count==5)
{
fputc(c,f2);
fputc('0',f2);
count=0;
}
else
fputc(c,f2);
}
fcloseall();
return 0;
}
OUTPUT:
[cseb332@Insat5E ~]$ cat>> file1.dat
1101111111110001111111100011111111
[cseb332@Insat5E ~]$ cc bitstuffing.c
[cseb332@Insat5E ~]$ ./a.out
[cseb332@Insat5E ~]$ cat file1.dat
1101111111110001111111100011111111
[cseb332@Insat5E ~]$ cat file2.dat
1101111101111000111110111000111110111
DE-BITSTUFFING:
PROGRAM:
#include<stdio.h>
int main()
{
19
FILE *f1,*f2;
char c;
int count;
count=0;
f1=fopen("file3.dat","w");
f2=fopen("file2.dat","r");
while(!feof(f2))
{
c=getc(f2);
if(c=='1')
count++;
else
count=0;
if(count==5)
{
fputc(c,f1);
c=fgetc(f2);
count=0;
}
else
fputc(c,f1);
}
fcloseall();
return 0;
}
OUTPUT:
[cseb332@Insat5E ~]$ cc debitstuffing.c
[cseb332@Insat5E ~]$ ./a.out
[cseb332@Insat5E ~]$ cat file2.dat
1101111101111000111110111000111110111
[cseb332@Insat5E ~]$ cat file3.dat
1101111111110001111111100011111111
scanf("%d",&n);
printf("Enter data:");
for(i=0;i< n;i++)
scanf("%d",&arr[i]);
printf("Enter size of generator:");
scanf("%d",&g);
do{
printf("Enter generator:");
for(j=0;j< g;j++)
scanf("%d",&gen[j]);
}
while(gen[0]!=1);
printf("\n\tThe generator matrix:");
for(j=0;j< g;j++)
printf("%d",gen[j]);
a=n+(g-1);
printf("\n\tThe appended matrix is:");
for(i=0;i< j;++i)
arr[n+i]=0;
for(i=0;i< a;++i)
printf("%d",arr[i]);
for(i=0;i< n;++i)
q[i]= arr[i];
for(i=0;i< n;++i)
{
if(arr[i]==0)
{
for(j=i;j< g+i;++j)
arr[j] = arr[j]^0;
}
else
{
arr[i] = arr[i]^gen[0];
arr[i+1]=arr[i+1]^gen[1];
arr[i+2]=arr[i+2]^gen[2];
arr[i+3]=arr[i+3]^gen[3];
}
}
printf("\n\tThe CRC is :");
for(i=n;i < a;++i)
printf("%d",arr[i]);
s=n+a;
for(i=n;i< s;i++)
q[i]=arr[i];
21
printf("\n");
for(i=0;i< a;i++)
printf("%d",q[i]);
}
OUTPUT:
[cseb332@Insat5E ~]$ cc crc4.c
[cseb332@Insat5E ~]$ ./a.out
Transmitter side:
Enter no. of data bits:8
Enter data:
1
0
1
0
1
0
1
0
Enter size of generator:4
Enter generator:
1
1
0
1
The generator matrix:1101
The appended matrix is:10101010000
The CRC is :110
10101010110
[cseb332@Insat5E ~]$ cc crc4.c
[cseb332@Insat5E ~]$ ./a.out
Transmitter side:
Enter no. of data bits:11
Enter data:
1
0
1
0
1
0
1
0
1
1
0
Enter size of generator:4
Enter generator:
22
1
1
0
1
The generator matrix:1101
The appended matrix is:10101010110000
The CRC is :000
10101010110000
CLIENT PROGRAM:
#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
main()
{
int std, lfd, len, choice, cport;
char str[20], str1[20], err[20];
struct sockaddr_in saddr, caddr;
printf("Enter the port address:");
scanf("%d", &cport);
std = socket(AF_INET, SOCK_STREAM, 0);
if(std<0)
perror("Error");
bzero(&saddr, sizeof(saddr));
saddr.sin_family = AF_INET;
inet_pton(AF_INET, "127.0.0.1", &saddr.sin_addr);
saddr.sin_port = htons(cport);
connect(std, (struct sockaddr *)&saddr, sizeof(saddr));
24
for(;;)
{
read(std, str, 20);
if(strcmp(str, "Exit") == 0)
{
printf("Exitting!\n");
break;
}
printf("Received: %s\nError?(1 - YES or 0 - NO): ", str);
scanf("%d", &choice);
if(choice == 0)write(std, "-1", sizeof("-1"));
else{printf("Enter the sequence no of the frame where error has occured");
scanf("%s", err);
write(std, err, sizeof(err));
read(std, str, 20);
printf("Received the transmitted frame: %s\n", str);
}
}
close(std);
}
OUTPUT:
SERVER SIDE:
[cseb332@Insat5E ~]$ cc selser.c
[cseb332@Insat5E ~]$ ./a.out
Enter the port address:4589
Enter the text:hello
Transmitting frames:0123
Received error in: 2
Retransmitting frame
Transmitting frames:4
Received error in: 0
Retransmitting frame
Exitting!
CLIENT SIDE:
[cseb332@Insat5E ~]$ cc selcli.c
[cseb332@Insat5E ~]$ ./a.out
Enter the port address:4589
Received: hell0123
Error?(1 - YES or 0 - NO): 1
Enter the sequence no of the frame where error has occurred:2
Received the transmitted frame: l
Received: o4
25
}
printf("\n");
write(lfd,frame,sizeof(frame));
read(lfd,ack,20);
sscanf(ack,"%d",&status);
if(status==-1)
printf(" Transmission is successful. \n");
else
{
printf(" Received error in %d \n\n",status);
printf("\n\n Retransmitting Frame. ");
for(j=0;;)
{
frame[j]=str[j+status];
printf("%d",j+status);
j++;
if((j+status)%4==0)
break;
}
printf("\n");
frame[j]='\0';
len=strlen(frame);
for(j=0;j<len;j++)
{
sprintf(temp,"%d",j+status);
strcat(frame,temp);
}
write(lfd,frame,sizeof(frame));
}
i+=SIZE;
}
write(lfd,"exit",sizeof("exit"));
printf("Exiting\n");
sleep(2);
close(lfd);
close(sfd);
}
CLIENT PROGRAM:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/types.h>
{
int sfd,lfd,len,choice;
27
char str[20],str1[20],err[20];
if(sfd<0)
perror("FdError");
bzero(&saddr,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=INADDR_ANY;
saddr.sin_port=htons(5465);
connect(sfd,(struct sockaddr*)&saddr,sizeof(saddr));
for(;;)
{
read(sfd,str,20);
if(!strcmp(str,"exit"))
{
printf("Exiting\n");
break;
}
printf("\n\nReceived%s\n\n1.Do u want to report an error(1-Yes 0-No)",str);
scanf("%d",&choice);
if(!choice)
write(sfd,"-1",sizeof("-1"));
else
{
printf("Enter the sequence no of the frame where error has occured\n");
scanf("%s",err);
write(sfd,err,sizeof(err));
read(sfd,str,20);
printf("\n\nReceived the re-transmitted frames%s\n\n",str);
}
}
}
OUTPUT:
SERVER OUTPUT:
[cseb332@Insat5E ~]$ cc goser.c
[cseb332@Insat5E ~]$ ./a.out
Enter the text :
Hellohai
Transmitting Frames. 0123
Received error in 1
Retransmitting Frame. 123
Transmitting Frames. 4567
Received error in 5
Retransmitting Frame. 567
28
Exiting!
CLIENT OUTPUT:
[cseb332@Insat5E ~]$ cc gocli.c
[cseb332@Insat5E ~]$ ./a.out
Receivedhell0123
1.Do u want to report an error(1-Yes 0-No):1
Enter the sequence no of the frame where error has occurred:
1
Received the re-transmitted frames:ell123
Received:ohai4567
1.Do u want to report an error(1-Yes 0-No):1
Enter the sequence no of the frame where error has occurred:
5
Received the re-transmitted frames:hai567
Exiting!
bzero((char*)&cli,sizeof(ser));
printf("ENTER PORT NO:\n");
scanf("%d",&port);
ser.sin_port=htons(port);
ser.sin_addr.s_addr=htonl(INADDR_ANY);
bi=bind(sd,(struct sockaddr *)&ser,sizeof(ser));
if(bi==-1)
{
printf("\n bind error, port busy, plz change port in client and server");
return 0;
}
i=sizeof(cli);
listen(sd,5);
nsd = accept(sd,((struct sockaddr *)&cli),&i);
if(nsd==-1)
{
printf("\ncheck the description parameter\n");
return 0;
}
printf("\nConnection accepted.");
while(count<5)
{
ph:
printf("\nSending FRAME %d to the Receiver...\n",prev_frame);
snprintf(buff,sizeof(buff),"%d",prev_frame);
send(nsd,buff,30,0);
r = recv(nsd,ack,5,0);
if(strcmp(ack,"ack")==0 || strcmp(ack,"ACK")==0)
{ count++;
if(prev_frame==0) prev_frame=1;
else prev_frame = 0;
}
else if(strcmp(ack,"nak")==0 || strcmp(ack,"NAK")==0)
{
printf("\n NAK: So again sending the Previous frame...\n"); goto ph;
}
}
printf("\n Bye..");
send(nsd,"EOF",4,0);
close(sd);
close(nsd);
return 0;
}
CLIENT PROGRAM:
#include "stdio.h"
#include "sys/types.h"
30
#include "netinet/in.h"
#include "string.h"
#include "sys/socket.h"
#include "stdlib.h"
#include "unistd.h"
int sd,con,port,i;
char content[30],ack[3];
struct sockaddr_in cli;
if((sd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1)
{
printf("\n Socket problem");
return 0;
}
bzero((char*)&cli,sizeof(cli));
cli.sin_family = AF_INET;
printf("ENTER PORT NO");
scanf("%d",&port);
cli.sin_port=htons(port);
cli.sin_addr.s_addr=htonl(INADDR_ANY);
con=connect(sd,(struct sockaddr*)&cli,sizeof(cli));
if(con==-1)
{
printf("\n connection error");
return 0;
}
i=recv(sd,content,30,0);
while(strcmp(content,"EOF") != 0)
{
printf("Received from Sender: Frame %s \n",content);
ph:
printf("\n Acknowledgement(ACK/NAK) : ");
scanf("%s",ack);
if(!(strcmp(ack,"ack")==0 || strcmp(ack,"nak")==0 || strcmp(ack,"ACK")==0 || str
cmp(ack,"NAK")==0))
{
printf("\n Not a valid Acknowledgement..use ACK or NAK..\n ");
goto ph;
}
send(sd,ack,5,0);
i=recv(sd,content,30,0);
}
printf("\n\n Bye...");
close(sd);
return 0;
}
31
OUTPUT:
SERVER OUTPUT :
[cseb332@Insat5E ~]$ cc stopser.c
[cseb332@Insat5E ~]$ ./a.out
Socket created
ENTER PORT NO:
2679
Port Address is 2679
:
Connection accepted.
Sending FRAME 0 to the Receiver...
Sending FRAME 1 to the Receiver...
NAK: So again sending the Previous frame...
Sending FRAME 1 to the Receiver...
NAK: So again sending the Previous frame...
Sending FRAME 1 to the Receiver...
Sending FRAME 0 to the Receiver...
NAK: So again sending the Previous frame...
Sending FRAME 0 to the Receiver...
Sending FRAME 1 to the Receiver...
Sending FRAME 0 to the Receiver...
Bye..
CLIENT OUTPUT:
[cseb332@Insat5E ~]$ cc stopcli.c
[cseb332@Insat5E ~]$ ./a.out
ENTER PORT NO2679
Received from Sender: Frame 0
Acknowledgement(ACK/NAK) : ack
Received from Sender: Frame 1
32
Acknowledgement(ACK/NAK) : nak
Received from Sender: Frame 1
Acknowledgement(ACK/NAK) : nak
Received from Sender: Frame 1
Acknowledgement(ACK/NAK) : ack
Received from Sender: Frame 0
Acknowledgement(ACK/NAK) : nak
Received from Sender: Frame 0
Acknowledgement(ACK/NAK) : ack
Received from Sender: Frame 1
Acknowledgement(ACK/NAK) : ack
Received from Sender: Frame 0
Acknowledgement(ACK/NAK) : ack
Bye...
EX 14-DNS PROTOCOL:
SERVER PROGRAM:
#include<stdio.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<string.h>
int main()
{
int nsd,sd,bi,port,i;
char a[10]="yahoo",b[10]="google",c[10]="rediff",e[10];
struct sockaddr_in ser,cli;
printf("Enter port no.:");
scanf("%d",&port);
if((sd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("error");
return 0;
}
printf("\nSocket Created\n");
bzero((char*)&ser,sizeof(ser));
printf("Port Address is %d",port);
33
ser.sin_family=AF_INET;
ser.sin_port=htons(port);
ser.sin_addr.s_addr=htons(INADDR_ANY);
bi=bind(sd,(struct sockaddr*)&ser,sizeof(ser));
if(bi==-1)
{
printf("\nERROR In bind");
return 0;
}
i=sizeof(cli);
listen(sd,5);
nsd=accept(sd,(struct sockaddr*)&cli,&i);
if(nsd==-1)
{
printf("Check parameter\n");
return 0;
}
printf("\nConnection accepted\n");
i=recv(nsd,e,10,0);
if(strcmp(e,a)==0)
printf("The IP address of yahoo is 127.0.0.1\n");
else if(strcmp(e,b)==0)
printf("The IP address of google is 127.0.0.2\n");
else if(strcmp(e,c)==0)
printf("\nThe IP address of rediff is 127.0.0.3\n");
close(sd);
close(nsd);
return 0;
}
CLIENT PROGRAM:
#include<stdio.h>
#include<netinet/in.h>
#include<string.h>
#include<sys/socket.h>
int main()
{
int sd,con,port,n;
char a[10]="yahoo",b[10]="google",c[10]="rediff",e[10];
struct sockaddr_in cli;
printf("Enter the port no. :\n");
scanf("%d",&port);
if((sd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("ERROR IN SOCKET");
return 0;
}
bzero((char *)&cli,sizeof(cli));
34
cli.sin_family=AF_INET;
cli.sin_port=htons(port);
cli.sin_addr.s_addr=htonl(INADDR_ANY);
con=connect(sd,(struct sockaddr*)&cli,sizeof(cli));
if(con==-1)
{
printf("ERROR IN CONNECT\n");
return 0;
}
printf("\nHost Name:\n");
printf("\n1.Yahoo\n2.Google\n3.Rediiff\n");
printf("select host:\n");
scanf("%d",&n);
if(n==1)
send(sd,a,10,0);
else if(n==2)
send(sd,b,10,0);
else if(n==3)
send(sd,c,10,0);
else
printf("Select from options:\n");
close(sd);
return 0;
}
SERVER OUTPUT:
[cseb332@Insat5E ~]$ cc dns.c
[cseb332@Insat5E ~]$ ./a.out
Enter port no.:4563
Socket Created
Port Address is 4563
Connection accepted
The IP address of google is 127.0.0.2
CLIENT OUTPUT:
[cseb332@Insat5E ~]$ cc dnscli.c
[cseb332@Insat5E ~]$ ./a.out
Enter the port no. :
4563
Host Name:
1.Yahoo
2.Google
3.Rediiff
35
select host:
2
int i,j,k,n,num,m=0,g=0,count=0;
printf("Enter the number of autonomus systems\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Enter the name of autonomus system\n");
scanf("%s",&a[i].name);
printf("Enter number of IP address in system\n");
scanf("%d",&a[i].no);
j=a[i].no;
printf("enter the address");
for(k=0;k<j;k++)
scanf("%s",&a[i].addr[k]);
}
printf("Enter the number of servers");
scanf("%d",&num);
printf("enter the name\n");
for(i=0;i<num;i++)
scanf("%s",sname[i]);
for(i=0;i<n;i++)
{printf("Who is server of%s\n",a[i].name);
scanf("%s",&sname1[i]);
}k=0;
for(j=0;j<num;j++)
{if(strcmp(sname[j],sname1[k])==0)
{for(m=0;m<a[j].no;m++)
{strcpy(c.addr[g],a[j].addr[m]);
k++;g++;
}}
else
{for(m=0;m<a[j].no;m++)
{strcpy(d.addr[g],a[j].addr[m]);
g++; }}}
printf("the addr known by the main server are\n");
printf("%d\n",g);
for(i=0;i<g;i++)
{
printf("%s",c.addr[i]);
printf("\n");
}}
OUTPUT:
[cseb332@Insat5E ~]$ cc bgp.c
[cseb332@Insat5E ~]$ ./a.out
Enter the number of autonomus systems
1
Enter the name of autonomus system
37
AS1
Enter number of IP address in system
4
enter the address
180.100.102.5
180.100.102.4
180.100.102.3
180.100.102.1
Enter the number of servers1
enter the name
BGP SERVER
Who is server ofAS1
the addr known by the main server are
4
for(j=1;j<=n;j++)
fscanf(f1,"%d",&adjmat[i][j]);
fclose(f1);
printf("\nThe adjacency matrix is\n\n");
viewadjmat();
while(1)
{
scanf("%c",&s);
printf("\nEnter the source code\n");
fflush(stdin);
scanf("%c",&s);
scanf("%c",&d);
printf("\n\nEnter the destination code\n");
fflush(stdin);
scanf("%c",&d);
printf("%c %c",s,d);
src=toupper(s)-64;
des=toupper(d)-64;
tot=searchpath(src,des,pathmat,&minlen);
printf("%d",tot);
viewpathmat(pathmat,tot,minlen);
printf("\nDo U want to continue(Y/N)");
scanf("%c",ch);
if(ch!='Y' && ch!='y')
break;
}
}
void viewpathmat(int pm[MAX],int n,int len)
{
int k;
if(len!=0)
{
printf("\nminlen is:%d\n\n shortest path is:",len);
for(k=n;k>1;k--)
printf("%c->",pm[k]+64);
printf("%c\n",pm[k]+64);
printf("Distance is :
");
for(k=n;k>1;k--)
printf("%d ",adjmat[pm[k]][pm[k-1]]);
}
else
printf("\n no path from source to destination node\n");
}
void viewadjmat()
{
int i,j;
printf("\n\t");
for(i=1;i<=n;i++)
printf("%4c",i+64);
printf("\n\n");
39
for(i=1;i<=n;i++,printf("\n\n"))
for(j=1;j<=n;j++)
{
if (j == 1)
printf("%4c",i+64);
printf("%4d",adjmat[i][j]);
}
}
int searchpath(int src,int des,int pathmath[MAX],int *minlen)
{
node graph[MAX];
int i,k,min,tot=0,curvertex,newlen,v,u;
*minlen=0;
for(i=1;i<=n;i++)
{
graph[i].previous=0;
graph[i].len=INFINITY;
graph[i].status=UNVISITED;
// curvertex=src;
}
graph[src].previous=0;
graph[src].len=0;
graph[src].status=VISITED;
curvertex=src;
while(curvertex!=des)
{
for(k=1;k<=n;k++)
{
if(adjmat[curvertex][k]>0&&graph[k].status == UNVISITED)
{
newlen=graph[curvertex].len+adjmat[curvertex][k];
if(newlen<graph[k].len)
{
graph[k].previous=curvertex;
graph[k].len=newlen;
}
}
}
min=INFINITY;
curvertex=0;
for(i=1;i<=n;i++)
if(graph[i].status==UNVISITED && graph[i].len<min)
{
min=graph[i].len;
curvertex=i;
}
if(curvertex==0)
return 0;
graph[curvertex].status=VISITED;
}
40
while(curvertex!=0)
{
pathmath[++tot]=curvertex;
curvertex=graph[curvertex].previous;
}
for(i=tot;i>1;i--)
{
u=pathmath[i];
v=pathmath[i-1];
*minlen=*minlen+adjmat[u][v];
}
return tot;
}
OUTPUT:
INPUT FILE:
[cseb332@Insat5E ~]$ cat >> path.txt
0110
1011
1100
0100
[cseb332@Insat5E ~]$ cc ospf.c
[cseb332@Insat5E ~]$ ./a.out ospf.c
Enter the no of vertices of weighted graph:4
The adjacency matrix is
A B C D
A 0 1 1 0
B 1 0 1 1
C 1 1 0 0
D 0 1 0 0
Enter the source code
A
41
}
}while(count!=0);
for(i=0;i<n;i++)
{
printf("\n\nState value for router %d is \n",i+1);
for(j=0;j<n;j++)
{
printf("\t\nnode %d via %d Distance%d",j+1,rt[i].from[j]+1,rt[i].dist[j]);
}
}
printf("\n\n");
}
OUTPUT:
[cseb332@Insat5E ~]$ cc dst.c
[cseb332@Insat5E ~]$ ./a.out
Enter the number of nodes : 4
Enter the cost matrix :
0 3 5 99
3 0 99 1
5402
99 1 2 0
State value for router 1 is
node 1 via 1 Distance0
node 2 via 2 Distance3
node 3 via 3 Distance5
node 4 via 2 Distance4
State value for router 2 is
node 1 via 1 Distance3
node 2 via 2 Distance0
node 3 via 4 Distance3
node 4 via 4 Distance1
State value for router 3 is
node 1 via 1 Distance5
node 2 via 4 Distance3
node 3 via 3 Distance0
43
while (1) {
if (sendto(fd,message,sizeof(message),0,(struct sockaddr *) &addr,
sizeof(addr)) < 0) {
perror("sendto");
exit(1);
}
sleep(1);
}
}
LISTENER PROGRAM:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
#define HELLO_PORT 12345
#define HELLO_GROUP "225.0.0.37"
#define MSGBUFSIZE 256
main(int argc, char *argv[])
{
struct sockaddr_in addr;
int fd, nbytes,addrlen;
struct ip_mreq mreq;
char msgbuf[MSGBUFSIZE];
u_int yes=1; /*** MODIFICATION TO ORIGINAL */
/* create what looks like an ordinary UDP socket */
if ((fd=socket(AF_INET,SOCK_DGRAM,0)) < 0)
{
perror("socket");
exit(1);
}
/**** MODIFICATION TO ORIGINAL */
/* allow multiple sockets to use the same PORT number */
if (setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(yes)) < 0) {
perror("Reusing ADDR failed");
exit(1);
}
/*** END OF MODIFICATION TO ORIGINAL */
/* set up destination address */
memset(&addr,0,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=htonl(INADDR_ANY); /* N.B.: differs from sender */
addr.sin_port=htons(HELLO_PORT);
/* bind to receive address */
if (bind(fd,(struct sockaddr *) &addr,sizeof(addr)) < 0) {
45
perror("bind");
exit(1);
}
/* use setsockopt() to request that the kernel join a multicast group */
mreq.imr_multiaddr.s_addr=inet_addr(HELLO_GROUP);
mreq.imr_interface.s_addr=htonl(INADDR_ANY);
if (setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)) < 0) {
perror("setsockopt");
exit(1);
}
/* now just enter a read-print loop */
while (1) {
addrlen=sizeof(addr);
if ((nbytes=recvfrom(fd,msgbuf,MSGBUFSIZE,0,
(struct sockaddr *) &addr,&addrlen)) < 0) {
perror("recvfrom");
exit(1);
}
puts(msgbuf);
}
}
OUTPUT:
SERVER OUTPUT:
[cseb332@Insat5E ~]$ cc mulser.c
[cseb332@Insat5E ~]$ ./a.out
CLIENT1 OUTPUT:
[cseb332@Insat5E ~]$ cc mullis.c
[cseb332@Insat5E ~]$ ./a.out
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
46
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
[3]+ Stopped
./a.out
CLIENT2 OUTPUT:
[cseb332@Insat5E ~]$ cc mullis.c
[cseb332@Insat5E ~]$ ./a.out
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
[3]+ Stopped
./a.out
47
CLIENT3 OUTPUT:
[cseb332@Insat5E ~]$ cc mullis.c
[cseb332@Insat5E ~]$ ./a.out
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
Hai
[3]+ Stopped
./a.out
main()
{
int sd,sd2,nsd,clilen,sport,len;
char sendmsg[20],rcvmsg[20];
time_t t; struct sockaddr_in servaddr,cliaddr;
printf("Enter the Port no\n");
scanf("%d",&sport);
sd=socket(AF_INET,SOCK_STREAM,0);
time(&t);
strcpy(sendmsg,ctime(&t));
printf("%s",sendmsg);
if(sd<0)
printf("Can't Create \n");
else
printf("Socket is Created\n");
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(sport);
sd2=bind(sd,(struct sockaddr*)&servaddr,sizeof(servaddr));
if(sd2<0)
printf(" Can't Bind\n");
else printf("\n Binded \n");
listen(sd,5);
clilen=sizeof(cliaddr);
nsd=accept(sd,(struct sockaddr*)&cliaddr,&clilen);
if(nsd<0)
printf("Can't Accept\n");
else
printf("Accepted\n");
send(nsd,sendmsg,100,0);
}
CLIENT PROGRAM:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<string.h>
#include<sys/socket.h>
#include<arpa/inet.h>
main()
{
int csd,cport,len;
char revmsg[100];
struct sockaddr_in servaddr;
printf("Enter the port\n");
scanf("%d",&cport);
csd=socket(AF_INET,SOCK_STREAM,0);
if(csd<0)
49
printf("Can't Create\n");
else
printf("Socket is Created\n");
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(cport);
if(connect(csd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)
printf("Connection error\n");
recv(csd,revmsg,100,0);
printf("%s\n",revmsg);
}
OUTPUT:
SERVER OUTPUT:
[cseb332@Insat5E ~]$ cc dateser.c
[cseb332@Insat5E ~]$ ./a.out
Enter the Port no
1268
Sat Oct 20 16:33:59 2012
Socket is Created
Binded
Accepted
[cseb332@Insat5E ~]$
CLIENT OUTPUT:
[cseb332@Insat5E ~]$ cc datecli.c
[cseb332@Insat5E ~]$ ./a.out
Enter the port
1268
Socket is Created
Sat Oct 20 16:33:59 2012
#include<string.h>
#include<sys/socket.h>
int main()
{
int sd,nsd,i=0,port=3468;
char content[80]="\0";
struct sockaddr_in ser,cli;
if((sd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1)
{
printf("\nError in socket creation");
return 0;
}
bzero((char*)&ser,sizeof(ser));
printf("\nThe port address is %d\n",port);
ser.sin_family=AF_INET;
ser.sin_port=htons(port);
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sd,(struct sockaddr*)&ser,sizeof(ser))==-1)
{
printf("\nError Binding problem");
return 0;
}
i=sizeof(cli);
listen(sd,1);
printf("\nServer Module\n");
nsd=accept(sd,(struct sockaddr*)&cli,&i);
if(nsd==-1)
{
printf("\nError:Client Accepted Problem");
return 0;
}
printf("\nClient Accepted");
i=0;
while(1)
{
printf("[The Command #]");
recv(nsd,&content,80,0);
printf("%s\n",content);
if(!strcmp(content,"exit"))
{
printf("client & server exited\n");
return 0;
}
system(content);
}
close(sd);
close(nsd);
return 0;
}
51
CLIENT PROGRAM:
#include<stdio.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<unistd.h>
#include<string.h>
#include<sys/socket.h>
int main()
{
int sd,i=0,port=3468;
char content[80]="\0";
struct sockaddr_in ser;
if((sd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1)
{
printf("socket creation problem\n");
return 0;
}
bzero((char *)&ser,sizeof(ser));
printf("\nPort address is %d",port);
ser.sin_family=AF_INET;
ser.sin_port=htons(port);
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(connect(sd,(struct sockaddr *)&ser,sizeof(ser))==-1)
{
printf("Connecting problem");
return 0;
}
printf("\nClient module\n");
printf("************\n");
while(1)
{
while(i<79)
{
scanf("%c",&content[i]);
if(content[i++]=='\n')
break;
}
if(i!=79)
i--;
content[i]='\0';
i=0;
send(sd,content,80,0);
if(!strcmp(content,"exit"))
{
printf("EXIT_U can't execute in server\n");
break;
}
}
close(sd);
52
return 0;
}
OUTPUT:
SERVER:
[cseb332@Insat5E ~]$ cc rceser.c
[cseb332@Insat5E ~]$ ./a.out
The port address is 3468
Server Module
Client Accepted[The Command #]
[The Command #]
[The Command #]ls
\
distvect.c
msg_server
serrr.c
accccept.c
dns.c
msg_server.c server.c
accept.c
dnscli.c
msg_svc.c
simpclient.c
acceptt.c
dnsser.c
msg.x
simp.h
a.out
dst.c
mul.c
simpservice.c
arp.c
dup.c
mullis.c
simpservice.cwq
arpcli.c
eof.c
mulser.c
simp.x
arpp.c
ex1.c
multicli
slidecli.c
arppp.c
fifo
multicli.c
slideser.c
arpser.c
file1.dat
multiser
slidewindowcli.c
bgp.c
file2.dat
multiser.c
slidewindowser.c
binding.c
file3.dat
namedpipe.c
slidingwindow.c
bitstuffing.c fname
new.c
slidiser.c
CLIENT:
[cseb332@Insat5E ~]$ cc rcecli.c
[cseb332@Insat5E ~]$ ./a.out
Port address is 3468
Client module
************
ls
53
{
k=2;
goto s;
}
sz=sizeof(s3);
recvfrom(sd,&str,30,0,(struct sockaddr *)&s3,&sz);
k=3;
s: if(strcmp(str,"\0"))
{
printf("%s\n",str);
for(i=0;i<10;i++)
{
if(!strcmp(str,ip[i]))
{
strcpy(string,"Reply from system 1 ");
strcat(string,eth[i]);
if(k==2)
sendto(sd,&string,30,0,(struct sockaddr *)&s2,sizeof(s2));
else
sendto(sd,&string,30,0,(struct sockaddr *)&s3,sizeof(s3));
break;
}
if(!strcmp(str,eth[i]))
{
strcpy(string,"Reply from system 1 ");
strcat(string,ip[i]);
if(k==2)
sendto(sd,&string,30,0,(struct sockaddr *)&s2,sizeof(s2));
break;
}
}
}
strcpy(str,"\0");
k=0;
}
else
while(1)
{
int flg=0;
scanf("%s",str);
for(i=0;i<10;i++)
{
if(!strcmp(str,ip[i]))
{
printf("Records found \n");
printf("Ethernet Address : %s\n",et
flg=1;
}
if(!strcmp(str,eth[i]))
{
55
OUTPUT:
[cseb309@Insat5E ~]$ cc arp.c
[cseb309@Insat5E ~]$ ./a.out
First Port
8888
Second Port
6666
Third Port
5555
127.0.0.5
Records found
Ethernet Address : 12.32.45.0.0.5
12.32.45.0.0.6
Records found
IP Address : 127.0.0.6
56