Anna University Results November - December 2011 available with your GPA only for Credit System

Exam Results 2012

Exam Results 2012 Inspirational Quotes

Saturday, September 18, 2010

Simulation of Sliding Window Protocol



/* Simulation of Sliding Window Protocol */

// SlideServer.c : A Simple Slide Server Program Using Sliding Window Protocol

#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
#include<arpa/inet.h>
#define SIZE 4
int main()
{
        int sfd,lfd,len,i,j,status;
        char str[20],frame[20],temp[20],ack[20];
        struct sockaddr_in saddr,caddr;
        sfd=socket(AF_INET,SOCK_STREAM,0);
        if(sfd<0)
                perror("Error");
                bzero(&saddr,sizeof(saddr));
                saddr.sin_family=AF_INET;
                saddr.sin_addr.s_addr=htonl(INADDR_ANY);
                saddr.sin_port=htons(5465);
                if(bind(sfd,(struct sockaddr*)&saddr,sizeof(saddr))<0)
                        perror("Bind Error");
                listen(sfd,5);
                len=sizeof(&caddr);
                lfd=accept(sfd,(struct sockaddr*)&caddr,&len);
                printf(" Enter the text : \n");
                scanf("%s",str);
                i=0;
                while(i<strlen(str))
                {
                        memset(frame,0,20);
                        strncpy(frame,str+i,SIZE);
                        printf(" Transmitting Frames. ");
                        len=strlen(frame);
                        for(j=0;j<len;j++)
                        {
                                printf("%d",i+j);
                                sprintf(temp,"%d",i+j);
                                strcat(frame,temp);
                        }
                        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);
}




// SlideClient.c : A Simple Slide Client Program Using Sliding Window Protocol

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
int main()
{
        int sfd,lfd,len,choice;
        char str[20],str1[20],err[20];
        struct sockaddr_in saddr,caddr;
        sfd=socket(AF_INET,SOCK_STREAM,0);
        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);
                }
        }
}

OUT PUT :

SlideServer.c :

cc SlideServer.c
./a.out

Enter the text
jerusalem
Transmitting Frames=0123
Transmission is successful
Transmitting Frames=4567
Received error in 5

Retransmitting Frame=678
Transmitting Frames=8
Received error in 2

Retransmitting Frame=34
Exiting

ClientServer.c :

cc ClientServer.c
./a.out

Received=jeru0123

1.Do u want to report an error(1-Yes 0-No)0


Received=sale4567

1.Do u want to report an error(1-Yes 0-No)1
Enter the sequence no of the frame where error has occured
5

Received the re-transmitted frames=ale567

Received=m8

1.Do u want to report an error(1-Yes 0-No)1
Enter the sequence no of the frame where error has occured
2
Received the re-transmitted frames=ru23
Exiting


No comments: