Pages

Thursday, September 5, 2013

SLIDING WINDOW - SERVER & Client

/* SLIDING WINDOW - SERVER
* PROGRAMMED BY: LUBIN N*/
#include<stdio.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<fcntl.h>
#include<string.h>
main()
{
struct sockaddr_in server;
int d,e,new;
char c;
d=socket(AF_INET,SOCK_STREAM,0);
server.sin_port=htons(2005);
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
e=bind(d,(struct sockaddr *)&server,sizeof(server));
if(e==0)
printf("\nBinding.....\n");
listen(d,1);
int n=sizeof(struct sockaddr_in);
new=accept(d,(struct sockaddr *)&server,&n);
while(1)
{
read(new,&c,1);
if(c=='d')
printf("Received....\n");
c='a';
write(new,&c,1);
printf("\n\n\n\t\t\tAcknowledged...........\n");
}
}




/* SLIDING WINDOW - CLIENT
* PROGRAMMED BY: LUBIN */
#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<unistd.h>
#include<netinet/in.h>
#include<fcntl.h>
#define window 10
int up=0,low=0,c;
void *senddata()
{
char ch='d';
while(1)
{
up++;
while(up-low>window)
{
printf("\nCompetition......Sender waiting...\n");
sleep(1);
}
printf("\t\tSending data....%d\n",up-1);
write(c,&ch,1);
}
}
void *receivedata()
{
char ch;
while(1)
{
read(c,&ch,1);
if(ch=='a')
{
printf("\n\nACK recieved for data %d\n",low);
low++;
sleep(2);
}
}
}
main()
{
pthread_t s,r;
struct sockaddr_in server;
c=socket(AF_INET,SOCK_STREAM,0);
server.sin_family=AF_INET;
server.sin_port=htons(2005);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
connect(c,(struct sockaddr*)&server,sizeof(server));
pthread_create(&s,0,senddata,0);
pthread_create(&r,0,receivedata,0);
while(1);
}



//www.edutalks.org



No comments:

Post a Comment