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