Professional Documents
Culture Documents
AIM
i-rand()%n+1:j-i;
1=i:
if(m>i)
m=m-i:i(m>0)
m=mtj-l;:
OUTPUT:
ENTER THE WINDOWS SIZE: 10
ACK:5
MESSAGE RECEIVED BY RECEIVER IS : Forget Code
WINDOW SIZE OF RECEIVER IS SHRINKED
PROGRAM:
protocol
Stop and wait
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h> #define
TIMEOUT 5
#define MAX SEQ1
#define TOT PACKETS 8
k=0;typedef struct
#define inc(k) if(k<MAX SEQ) k++; else
int data:
packet: typedef struct
int kind;int seq; int
ack:
packet info;int err;
frame: frame DATA;
typedef enum {frame arrival,err,timeout,no_event} event type;void
from network layer(packet *);
void to network layer(packet *); void
to physical layer(frame *); void
from_ physical_layer(frame *);
void wait for event
wait for event sender(event type *); void
void sender(); reciever(event type *);void reciever);
int i-1:
char turn: I/Data to be sent by sender
int DISCONNECT-0; lIr,s
*/void main()
clrscr(); randomize();
whi le(!DISCONNECT)
sender( ): delay(400);
reciever();
getch();
*/void sender()
static int frame to send=0;static frame s:
packet buffer; event type event;
static int flag-0;
if(flag--0)
if(event==frame arrival)
from network_layer(&buffer);inc(frame_ to _send);
s.info = buffer;
S.seq = frame to send:;
printf("SENDER: Info = %d Seq No =%d",s.info,s.seq);turn ='r;
to_physical _layer( &s):
if(event==timeout)
printf("SENDER:Resending Frame");turn ='r;
to_physical_layer(&s);
*/void reciever()
reciever(&event);if(turn==r)
wait for event
iflevent=-frame arrival)
if(r.seq==frame_expected)
from physicallayer(&r);
laver&r,info);inc(trame expected):
to netwok
else Acknowledgement Resentln"):
print"RECIEVER :
s:ophysical layer(&s):
itËeventerr)
"RECIEVER: Garbled Framen"):turn ='s': /it
print
frame not reeieved
l/sender shold send it again
if( turn=='s')
timert +; it(timer==TIMEOUT)
*e= timeout:
printt"SENDER: Ack not recieved=> TIMEOUTn"):timer = 0;
return:
if( DATA.err==0)
*e= err:else
timer = 0:
*e = frame arrival:
type * e)
void wait for event reciever(event
if(turn==r)
if(DATA.err=-0)
*e= err:else
*e= frame arrival;