Sunday, June 14, 2015

SIMULATON OF SLIDING WINDOW PROTOCOL

SERVER SIDE:

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
int main(int argc,char **argv)
{
int len;
int listenfd,connfd,n;
struct sockaddr_in servaddr,cliaddr;
char b[1024];
char c[1000];
listenfd=socket(AF_INET,SOCK_STREAM,0);
if(listenfd<0)
perror("cannot create socket");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr("20.30.1.211");
servaddr.sin_port=htons(20064);
bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
listen(listenfd,5);
len=sizeof(cliaddr);
connfd=accept(listenfd,(struct sockaddr*)&cliaddr,&len);
if(connfd>0)
printf("\n connection established");
do
{
n=read(connfd,b,1024);
printf("\n reeive data %s",b);
printf("\n your acknowledgement[yes=1,no=0]:");
scanf("%s",c);
n=write(connfd,c,1024);
}while(1);
close(connfd);
close(listenfd);
return 0;
}


CLIENT SIDE:

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
int main(int arg,char **argv)
{
int len;
int sockfd,n,m,p;
struct sockaddr_in servaddr,cliaddr;
char buff[1024];
char buff1[1000];
char str[1000];
char d[10]={'a','b','c','d','e','f','g','h','i','j'};
int count[10],ack[10];
int i,j,k;
for(k=0;k<10;k++)
{
count[k]=0;
ack[k]=0;
}

sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
perror("\n cannot create socket");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr("20.30.1.211");
servaddr.sin_port=htons(20064);
m=connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
if(m==0)
printf("\n connection established");
i=0;
do
{
 *buff=d[i];
n=write(sockfd,buff,1024);
n=read(sockfd,buff1,1024);
if(strcmp(buff1,"1")==0)
{
for(p=i;p>i-2,p>=0;p--)
{
ack[p]=1;
count[p]=1;
}
}
for(j=i;j>i-3,j>=0;j--)
{
if(ack[j]==0)
count[j]++;
}
if(i>=2 && count[i-2]==3)
{
count[i-2]=1;
i=i-2;
}
else
i++;
}
while(i<10);
printf("the data is successfully sent to the server \n");
close(sockfd);
return 0;
}




OUTPUT:

SERVER SIDE:

"serversli.c" 39L, 881C written
[ME04@TELNET ~]$ cc serversli.c
[ME04@TELNET ~]$ ./a.out

 connection established
 reeive data a
 your acknowledgement[yes=1,no=0]:1

 reeive data b
 your acknowledgement[yes=1,no=0]:1

 reeive data c
 your acknowledgement[yes=1,no=0]:1

 reeive data d
 your acknowledgement[yes=1,no=0]:1

 reeive data e
 your acknowledgement[yes=1,no=0]:1

 reeive data f
 your acknowledgement[yes=1,no=0]:1

 reeive data g
 your acknowledgement[yes=1,no=0]:1

 reeive data h
 your acknowledgement[yes=1,no=0]:1

 reeive data i
 your acknowledgement[yes=1,no=0]:0

 reeive data j
 your acknowledgement[yes=1,no=0]:1

 reeive data j
 your acknowledgement[yes=1,no=0]:1

 reeive data j
 your acknowledgement[yes=1,no=0]:0

[ME04@TELNET ~]$
CLIENT SIDE:

"clientsli.c" 64L, 1100C written
[ME04@TELNET ~]$ cc clientsli.c
[ME04@TELNET ~]$ ./a.out

 connection establishedthe data is successfully sent to the server
[ME04@TELNET ~]$

No comments:

Post a Comment