02 May, 2014

Protocol 3

Sender

#include<stdio.h>
#include<fcntl.h>
#include<stdlib.h>
int main()
{
    int retval;
    char buffer1[63],buffer2[63];
    char buflen = 64;
    int fd1,fd2;

    int ack=0,timeout=0,iteration=0,iserror=0;

    time_t time1,time2;

    fd1 = open("Compile",O_RDWR|O_NDELAY);

    fd2 = open("Ackfifo",O_RDWR);
    printf("Please Enter The Message \n");
    scanf("%s",buffer1);
    retval = write(fd1,&buffer1,buflen);
    if(!strcmp(buffer1,"Bye"))
    {
        exit(0);
    }
    if(retval < 0)
        perror("Sendetr");

    for(;;)
    {
        time1 = time(0);
        while(!ack && !timeout && !iserror)
        {
            time2 = time(0);
            if((time2-time1)>=1)
            {
                timeout=1;
            }
            retval = read(fd2,&buffer2,buflen);

            if(retval>=0)
                ack=1;

            iserror = checksum(buffer2);
        }
        if(ack)
        {

            printf("Ack Received\n");

            printf("Please Enter The Message \n");
            scanf("%s",buffer1);
            retval = write(fd1,&buffer1,buflen);

            if(!strcmp(buffer1,"Bye"))
                    break;
            if(retval < 0)
                    perror("Sendetr");
            time1 = time(0);
            ack = 0;
        }
        else if(timeout || iserror)
        {
            retval = write(fd1,&buffer1,buflen);

            if(!strcmp(buffer1,"Bye"))
                    break;
            if(retval < 0)
                    perror("Sendetr");

            time1 = time(0);
            timeout = 0;
            iserror = 0;
        }
    }
}

Receiver


#include<stdio.h>
#include<fcntl.h>
int main()
{
    int retval;
    char buffer1[63],buffer2[63];
    char buflen = 64;
    int fd1,fd2;

    fd1 = open("Compile",O_RDWR);
    fd2 = open("Ackfifo",O_RDWR);

    for(;;)
    {
        retval = read(fd1,&buffer1,buflen);
        if(!strcmp(buffer1,"Bye"))
            break;
        if(retval < 0)
            perror("Receiver");
           
        printf("%s",buffer1);
       
        sleep(10);
       
        retval = write(fd2,&buffer2,buflen);
        if(retval < 0)
            perror("Receiver Ack");
    }
}


Protocol 2

Sender

#include<stdio.h>
#include<fcntl.h>
int main()
{
    int retval;
    char buffer1[63],buffer2[63];
    char buflen = 64;
    int fd1,fd2;
   
    fd1 = open("Compipe",O_RDWR);
    fd2 = open("Ackfifo",O_RDWR);
   
    for(;;)
    {
        printf("Please Enter The Message \n");
        fflush(stdin);
        scanf("%s",buffer1);
       
        retval = write(fd1,&buffer1,buflen);
        if(!strcmp(buffer1,"Bye"))
            break;
           
        if(retval < 0)
            perror("Sendetr");
           
        retval = read(fd2,&buffer2,buflen);
        //read stops untill the receiver sends back the ack
       
        if(retval < 0)
            perror("Sender Ack");
    }
}

Receiver



#include<stdio.h>
#include<fcntl.h>
int main()
{
    int retval;
    char buffer1[63],buffer2[63];
    char buflen = 64;
    int fd1,fd2;
   
    fd1 = open("Compipe",O_RDWR);
    fd2 = open("Ackfifo",O_RDWR);
   
    for(;;)
    {
        retval = read(fd1,&buffer1,buflen);
        if(!strcmp(buffer1,"Bye"))
            break;
        if(retval < 0)
            perror("Receiver");
       
        printf("Receiver Message is : - ")
        printf("%s\n",buffer1);
       
        //simulating the application read time
        //sleep(10);
       
        retval = write(fd2,&buffer2,buflen);
        //sending back the ack!
       
        if(retval < 0)
            perror("Receiver Ack");
    }
}



 

Protocol 1

Sender


#include<stdio.h>
#include<fcntl.h>
int main()
{
    int retval;
    char buffer1[63];
    char buflen = 64;
    int fd1;
   
    fd1 = open("Compile",O_RDWR);
    for(;;)
    {
        printf("Please Enter The Message \n");
        scanf("%s",buffer1);
        retval = write(fd1,&buffer1,buflen);
        if(!strcmp(buffer1,"Bye"))
            break;
        if(retval < 0)
            perror("Sendetr");
    }
}

Receiver


#include<stdio.h>
#include<fcntl.h>
int main()
{
    int retval;
    char buffer1[63];
    char buflen = 64;
    int fd1;
   
    fd1 = open("Compile",O_RDWR);
    for(;;)
    {
        retval = read(fd1,&buffer1,buflen);
        if(!strcmp(buffer1,"Bye"))
            break;
        if(retval < 0)
            perror("Receiver");
           
        printf("%s",buffer1);
    }
}