Lab Document

27
PROCESS CREATION PROGRAM #include<stdio.h> #include<string.h> #include<sys/types.h> #define MAX_COUNT 10 #define BUF_SIZE 100 main(void) { pid_t pid; int i; char buf[BUF_SIZE]; fork(); for(i=1;i<=MAX_COUNT;i++) { sprintf(buf,"This line is from pid %d,value=%d\ n",getpid(),i); write(1,buf,strlen(buf)); } }

description

network programming

Transcript of Lab Document

Page 1: Lab Document

PROCESS CREATION

PROGRAM

#include<stdio.h>

#include<string.h>

#include<sys/types.h>

#define MAX_COUNT 10

#define BUF_SIZE 100

main(void)

{

pid_t pid;

int i;

char buf[BUF_SIZE];

fork();

for(i=1;i<=MAX_COUNT;i++)

{

sprintf(buf,"This line is from pid %d,value=%d\n",getpid(),i);

write(1,buf,strlen(buf));

}

}

Page 2: Lab Document

OUTPUT

[student@svcet bala]$ vi process.c

[student@svcet bala]$ cc process.c

[student@svcet bala]$ ./a.out

This line is from pid 5540,value=1

This line is from pid 5540,value=2

This line is from pid 5540,value=3

This line is from pid 5540,value=4

This line is from pid 5540,value=5

This line is from pid 5540,value=6

This line is from pid 5540,value=7

This line is from pid 5540,value=8

This line is from pid 5540,value=9

This line is from pid 5540,value=10

This line is from pid 5541,value=1

This line is from pid 5541,value=2

This line is from pid 5541,value=3

This line is from pid 5541,value=4

This line is from pid 5541,value=5

This line is from pid 5541,value=6

This line is from pid 5541,value=7

This line is from pid 5541,value=8

This line is from pid 5541,value=9

This line is from pid 5541,value=10

Page 3: Lab Document

SOCKET CREATION

PROGRAM

#include<stdio.h>

#include<stdlib.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<arpa/inet.h>

main()

{

int sockfd1,sockfd2;

sockfd1=socket(AF_INET,SOCK_STREAM,0);

sockfd2=socket(PF_INET,SOCK_DGRAM,0);

if(sockfd1==-1)

{

printf("Socket 1 is not created");

}

else

{

printf("socket is created\tsocket1 file descriptor value is %d\n",sockfd1);

}

if(sockfd2==-1)

{

printf("socket2 is not created");

}

else{

printf("socket2 is created\t socket2 is descriptor value is%d\n",sockfd2);

}

}

Page 4: Lab Document

OUTPUT

[student@svcet bala]$ vi soc.c

[student@svcet bala]$ cc soc.c

[student@svcet bala]$ ./a.out

socket is created socket1 file descriptor value is 3

socket2 is created socket2 is descriptor value is4

Page 5: Lab Document

BIND FUNCTION

PROGRAM

#include<stdio.h>

#include<stdlib.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<arpa/inet.h>

#define PORTNO 3550

main()

{

int sockfd,i=PORTNO;

struct sockaddr_in myaddr;

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

{

printf("Creation error");

}

myaddr.sin_family=AF_INET;

myaddr.sin_port=htons(PORTNO);

myaddr.sin_addr.s_addr=INADDR_ANY;

if(bind(sockfd,(struct sockaddr*)&myaddr,sizeof(struct sockaddr))!=-1)

{

printf("Socket is binded at port no %d\n",i);

}

else

{

printf("Binding Error\n");

}

}

Page 6: Lab Document

OUTPUT

[student@svcet bala]$ vi bindfunc.c

[student@svcet bala]$ cc bindfunc.c

[student@svcet bala]$ ./a.out

Socket is binded at port no 3550

Page 7: Lab Document

ACCEPT FUNCTION

PROGRAM

#include<stdlib.h>

#include<stdio.h>

#include<strings.h>

#include<netinet/in.h>

#include<sys/types.h>

#include<sys/socket.h>

#define PORT 3550

#define BACKLOG 12

int main()

{

int fd1,fd2;

struct sockaddr_in server;

struct sockaddr_in client;

int sin_size;

if(fd1=socket(AF_INET,SOCK_STREAM,0)==-1)

{

printf("socket()error");

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(fd1,(struct sockaddr*)&server,sizeof(struct sockaddr)==-1))

{

printf("server is in accept mode\n");

Page 8: Lab Document

exit(-1);

}

if(listen(fd1,BACKLOG)==-1)

{

printf("listen()error\n");

exit(-1);

}

else

{

printf("server in accept mode");

while(1)

{

sin_size=sizeof(struct sockaddr_in);

if(fd2=accept(fd1,(struct sockaddr*)&client,&sin_size)==-1)

{

printf("accept()error\n");

exit(-1);

}

else

{

printf("server in accept mode\n");

printf("You get a connection from %s\n",inet_ntoa(client.sin_addr));

close(fd2);

}

}

}

}

Page 9: Lab Document

OUTPUT

[student@svcet bala]$ vi acceptfunc.c

[student@svcet bala]$ cc acceptfunc.c

[student@svcet bala]$ ./a.out

server is in accept mode

Page 10: Lab Document

LISTEN FUNCTION

PROGRAM

#include<stdlib.h>

#include<stdio.h>

#include<strings.h>

#include<netinet/in.h>

#include<sys/types.h>

#include<sys/socket.h>

#define PORT 3550

#define BACKLOG 12

int main()

{

int fd;

struct sockaddr_in server;

struct sockaddr_in client;

int sin_size;

int x;

if((fd=socket(AF_INET,SOCK_STREAM,0))==-1)

{

printf("socket()error");

exit(-1);

}

server.sin_family=AF_INET;

server.sin_port=htonl(PORT);

server.sin_addr.s_addr=INADDR_ANY;

bzero(&(server.sin_zero),8);

if(bind(fd,(struct sockaddr*)&server,sizeof(struct sockaddr))==-1)

{

Page 11: Lab Document

printf("Bind error\n");

exit(-1);

}

x=listen(fd,BACKLOG);

if(x==-1)

{

printf("listen()error");

exit(-1);

}

else

{

printf("server is in the listening mode\n");

}

close(fd);

}

Page 12: Lab Document

OUTPUT

[student@svcet bala]$ vi listenfunc.c

[student@svcet bala]$ cc listenfunc.c

[student@svcet bala]$ ./a.out

server is in the listening mode

Page 13: Lab Document

ADDRESS RESOLUTION PROTOCOL

PROGRAM

#include<unistd.h>

#include<stdio.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<strings.h>

#include<sys/socket.h>

int main()

{

int sd,j=0,port=2000;

char con[50]="0";

struct sockaddr_in ser;

char ip[50][50]={"121.0.0.1","121.0.0.2","121.0.0.3","121.0.0.4"};

char eth[50][50]={"121.32.45.0.0.1","121.32.45.0.0.2","121.32.45.0.0.3","121.32.45.0.0.4"};

sd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

bzero((char*)&ser,sizeof(ser));

ser.sin_family=AF_INET;

ser.sin_port=htons(port);

ser.sin_addr.s_addr=htonl(INADDR_ANY);

printf("Enter the ip address");

scanf("%s",&con);

for(j=0;j<4;j++)

{

if(strcmp(con,ip[j])==0)

{

printf("Ethernet address is:%s\n",eth[j]);

Page 14: Lab Document

break;

}

}

return 0;

}

Page 15: Lab Document

OUTPUT

[student@svcet bala]$ vi arp.c

[student@svcet bala]$ cc arp.c

[student@svcet bala]$ ./a.out

Enter the ip address121.0.0.1

Ethernet address is:121.32.45.0.0.1

Page 16: Lab Document

REVERSE ADDRESS RESOLUTION PROTOCOL

PROGRAM

#include<unistd.h>

#include<stdio.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<strings.h>

#include<sys/socket.h>

int main()

{

int sd,j=0,port=2000;

char con[50]="0";

struct sockaddr_in ser;

char ip[50][50]={"121.0.0.1","121.0.0.2","121.0.0.3","121.0.0.4"};

char eth[50][50]={"121.32.45.0.0.1","121.32.45.0.0.2","121.32.45.0.0.3","121.32.45.0.0.4"};

sd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

bzero((char*)&ser,sizeof(ser));

ser.sin_family=AF_INET;

ser.sin_port=htons(port);

ser.sin_addr.s_addr=htonl(INADDR_ANY);

printf("Enter the Ethernet address");

scanf("%s",&con);

for(j=0;j<4;j++)

{

if(strcmp(con,eth[j])==0)

{

printf("IP address is:%s\n",ip[j]);

Page 17: Lab Document

break;

}

}

return 0;

}

Page 18: Lab Document

OUTPUT

[student@svcet bala]$ vi rarp.c

[student@svcet bala]$ cc rarp.c

[student@svcet bala]$ ./a.out

Enter the Ethernet address121.32.45.0.0.1

IP address is:121.0.0.1

Page 19: Lab Document

SLIDDING WINDOW PROTOCOL

PROGRAM

#include<stdio.h>

#include<string.h>

int sep(int pn)

{

printf("\n Selection repeat of packet%d",pn);

printf("Packet %send=>",pn);

printf("Packet %d received",pn);

printf("ACK %d received",pn);

}

int calculate(int ws,int pno,int tot)

{

int n,x=0;

if(pno<ws)

n=ws-pno;

else

{

n=tot-pno;

if(n<=ws)

n=n;

else

n=ws-(pno%ws);

}

return n;

}

void trans(int winsize,int totpac,int pkno,int pcount)

{

Page 20: Lab Document

int c,count=0,i;

while(pcount<=totpac)

{

if(count==winsize)

{

printf("\n Next session");

count =0;

}

if(pkno==pcount)

{

printf("\n The packet %d is discarded",pkno);

pcount++;

c=calculate(winsize,pkno,totpac);

printf("\n The remaining packet to be send in this session %d",c);

for(i=0;i<pcount;i++)

{

printf("\n packet %d send=>",pcount);

printf("\t packet %d is received==>",pcount);

printf("\n ack %d received",pcount);

pcount++;

count=0;

}

sep(pkno);

printf("\n..");

count=0;

}

else

{

Page 21: Lab Document

printf("\nPacket %d Send=>",pcount);

printf("\n Packet %d is received=>",pcount);

printf("\npack %d received",pcount);

pcount++;

}

count++;

}

}

int main()

{

int totpac,winsize,pkno,pcount;

char c;

printf("\n Enter the window size:");

scanf("%d",&winsize);

printf("\n Enter the total no of packets");

scanf("%d",&totpac);

if(totpac<winsize)

{

printf("Window size is greator no of packets");

return 0;

}

printf("do you want ti kill any packets(y/n)");

scanf("%s",&c);

if(c=='y')

{

printf("Enter the number to kill");

scanf("%d",&pkno);

if(pkno>totpac)

Page 22: Lab Document

{

printf("Enter the correct packet number");

return 0;

}

}

pcount=1;

trans(winsize,totpac,pkno,pcount);

}

Page 23: Lab Document

OUTPUT

[student@svcet bala]$ vi slidewindow.c

[student@svcet bala]$ vi slidewindow.c

[student@svcet bala]$ cc slidewindow.c

[student@svcet bala]$ ./a.out

Enter the window size: 2

Enter the total no of packets 5

do you want ti kill any packets(y/n) n

Packet 1 Send=> Packet 1 is received=>

pack 1 received = >Packet 2 Send=>

Packet 2 is received=> Pack 2 received

Next session

Packet 3 Send=> Packet 3 is received=>

pack 3 received

Packet 4 Send=> Packet 4 is received=>

pack 4 received

Next session

Packet 5 Send=> Packet 5 is received=>