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");
    }
}