亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? p6.c

?? 四個網絡協議在linux下的模擬實現
?? C
字號:
/* Protocol 6 (nonsequential receive) accepts frames out of order, but passes packets to the   network layer in order. Associated with each outstanding frame is a timer. When the timer   goes off, only that frame is retransmitted, not all the outstanding frames, as in protocol 5. */#define MAX_SEQ 7	/* should be 2^n - 1 */#define NR_BUFS ((MAX_SEQ + 1)/2)typedef enum {frame_arrival, cksum_err, timeout, network_layer_ready, ack_timeout} event_type;#include "protocol.h"boolean no_nak = true;	/* no nak has been sent yet */seq_nr oldest_frame = MAX_SEQ+1;	/* init value is for the simulator */static boolean between(seq_nr a, seq_nr b, seq_nr c){/* Same as between in protocol5, but shorter and more obscure. */  return ((a <= b) && (b < c)) || ((c < a) && (a <= b)) || ((b < c) && (c < a));}static void send_frame(frame_kind fk, seq_nr frame_nr, seq_nr frame_expected, packet buffer[]){/* Construct and send a data, ack, or nak frame. */  frame s;	/* scratch variable */  s.kind = fk;	/* kind == data, ack, or nak */  if (fk == data) s.info = buffer[frame_nr % NR_BUFS];  s.seq = frame_nr;	/* only meaningful for data frames */  s.ack = (frame_expected + MAX_SEQ) % (MAX_SEQ + 1);  if (fk == nak) no_nak = false;	/* one nak per frame, please */  to_physical_layer(&s);	/* transmit the frame */  if (fk == data) start_timer(frame_nr % NR_BUFS);  stop_ack_timer();	/* no need for separate ack frame */}void protocol6(void){  seq_nr ack_expected;	/* lower edge of sender's window */  seq_nr next_frame_to_send;	/* upper edge of sender's window + 1 */  seq_nr frame_expected;	/* lower edge of receiver's window */  seq_nr too_far;	/* upper edge of receiver's window + 1 */  int i;	/* index into buffer pool */  frame r;	/* scratch variable */  packet out_buf[NR_BUFS];	/* buffers for the outbound stream */  packet in_buf[NR_BUFS];	/* buffers for the inbound stream */  boolean arrived[NR_BUFS];	/* inbound bit map */  seq_nr nbuffered;	/* how many output buffers currently used */  event_type event;  enable_network_layer();	/* initialize */  ack_expected = 0;	/* next ack expected on the inbound stream */  next_frame_to_send = 0;	/* number of next outgoing frame */  frame_expected = 0;	/* frame number expected */  too_far = NR_BUFS;	/* receiver's upper window + 1 */  nbuffered = 0;	/* initially no packets are buffered */  for (i = 0; i < NR_BUFS; i++) arrived[i] = false;  while (true) {     wait_for_event(&event);	/* five possibilities: see event_type above */     switch(event) {         case network_layer_ready:	/* accept, save, and transmit a new frame */                nbuffered = nbuffered + 1;	/* expand the window */                from_network_layer(&out_buf[next_frame_to_send % NR_BUFS]); /* fetch new packet */                send_frame(data, next_frame_to_send, frame_expected, out_buf);	/* transmit the frame */                inc(next_frame_to_send);	/* advance upper window edge */                break;        case frame_arrival:	/* a data or control frame has arrived */                from_physical_layer(&r);	/* fetch incoming frame from physical layer */                if (r.kind == data) {                        /* An undamaged frame has arrived. */                        if ((r.seq != frame_expected) && no_nak)                            send_frame(nak, 0, frame_expected, out_buf); else start_ack_timer();                        if (between(frame_expected, r.seq, too_far) && (arrived[r.seq%NR_BUFS] == false)) {                                /* Frames may be accepted in any order. */                                arrived[r.seq % NR_BUFS] = true;	/* mark buffer as full */                                in_buf[r.seq % NR_BUFS] = r.info;	/* insert data into buffer */                                while (arrived[frame_expected % NR_BUFS]) {                                        /* Pass frames and advance window. */                                        to_network_layer(&in_buf[frame_expected % NR_BUFS]);                                        no_nak = true;                                        arrived[frame_expected % NR_BUFS] = false;                                        inc(frame_expected);	/* advance lower edge of receiver's window */                                        inc(too_far);	/* advance upper edge of receiver's window */                                        start_ack_timer();	/* to see if (a separate ack is needed */                                }                        }                }                if((r.kind==nak) && between(ack_expected,(r.ack+1)%(MAX_SEQ+1),next_frame_to_send))                        send_frame(data, (r.ack+1) % (MAX_SEQ + 1), frame_expected, out_buf);                while (between(ack_expected, r.ack, next_frame_to_send)) {                        nbuffered = nbuffered - 1;	/* handle piggybacked ack */                        stop_timer(ack_expected % NR_BUFS);	/* frame arrived intact */                        inc(ack_expected);	/* advance lower edge of sender's window */                }                break;        case cksum_err: if (no_nak) send_frame(nak, 0, frame_expected, out_buf); break;	/* damaged frame */        case timeout: send_frame(data, oldest_frame, frame_expected, out_buf); break;	/* we timed out */        case ack_timeout: send_frame(ack,0,frame_expected, out_buf);	/* ack timer expired; send ack */     }     if (nbuffered < NR_BUFS) enable_network_layer(); else disable_network_layer();  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
顶级嫩模精品视频在线看| 性久久久久久久| 日韩女优视频免费观看| 欧美在线免费播放| 欧美午夜寂寞影院| 欧美日韩中字一区| 欧美一级一区二区| 精品国精品自拍自在线| 久久久久久久一区| 久久蜜臀精品av| 国产精品狼人久久影院观看方式| 国产欧美日韩视频一区二区| 国产精品青草综合久久久久99| 日本一二三不卡| 亚洲欧美偷拍卡通变态| 一区二区欧美视频| 日韩精品欧美成人高清一区二区| 日本特黄久久久高潮| 国产伦精品一区二区三区在线观看| 国产一二精品视频| 99在线精品观看| 欧美日韩不卡一区二区| 精品国产乱码久久久久久牛牛 | 国产精品区一区二区三| 中文字幕日韩一区| 亚洲成av人片www| 久久国产精品72免费观看| 成人一区二区三区在线观看| 在线观看日韩电影| 欧美一卡在线观看| 国产精品久久久久影院老司| 国产成人精品www牛牛影视| 成人综合婷婷国产精品久久蜜臀| 色综合天天在线| 777久久久精品| 国产亚洲欧洲997久久综合| 最新日韩在线视频| 麻豆精品国产91久久久久久| 成人免费福利片| 欧美一级片免费看| 亚洲欧美色图小说| 国产制服丝袜一区| 欧美在线你懂得| 国产人妖乱国产精品人妖| 亚洲v中文字幕| 粉嫩在线一区二区三区视频| 91精品综合久久久久久| 亚洲色图欧洲色图婷婷| 国产美女一区二区| 欧美一区三区二区| 极品少妇xxxx精品少妇| 欧美二区三区91| 国产日韩影视精品| 亚洲国产欧美一区二区三区丁香婷| 精品一区二区久久久| 欧美特级限制片免费在线观看| 国产亚洲一二三区| 九九九精品视频| 欧美久久久久久蜜桃| 一二三四社区欧美黄| 国产精品香蕉一区二区三区| 欧美一区二区在线视频| 亚洲妇女屁股眼交7| 99精品视频在线免费观看| 久久久久久久综合狠狠综合| 久久国内精品自在自线400部| 在线观看区一区二| 依依成人综合视频| 色999日韩国产欧美一区二区| 中文在线一区二区| 国产suv精品一区二区三区| 精品欧美久久久| 国产综合色视频| 精品免费99久久| 韩国精品免费视频| 精品国产成人系列| 国产一区二区三区久久悠悠色av | 91精品国产一区二区三区蜜臀| 亚洲精品亚洲人成人网| 99国产精品久| 亚洲卡通动漫在线| 欧亚洲嫩模精品一区三区| 亚洲精品国产第一综合99久久| 91麻豆123| 亚洲一区视频在线| 9191精品国产综合久久久久久| 日韩电影在线一区| 精品国产sm最大网站免费看| 国产精品原创巨作av| 国产精品久久久久久亚洲毛片 | 国产aⅴ综合色| 亚洲欧洲日韩在线| 欧美性受xxxx| 日本成人在线不卡视频| 欧美本精品男人aⅴ天堂| 国产一区二区在线视频| 国产精品久久久久久久久搜平片| 色哟哟精品一区| 日韩国产欧美在线视频| 久久久久久久久久久久电影| www.av精品| 日韩不卡手机在线v区| 国产亚洲1区2区3区| 在线看不卡av| 麻豆91免费看| 亚洲欧洲色图综合| 9191成人精品久久| 成人精品gif动图一区| 亚洲一区二区欧美激情| 欧美精品一区二区在线播放| 成人app在线观看| 日韩av在线免费观看不卡| 国产精品无遮挡| 欧美乱妇15p| 波多野结衣精品在线| 日韩成人av影视| 中文字幕不卡在线| 日韩一级高清毛片| 日本乱人伦aⅴ精品| 国产精品综合一区二区三区| 亚洲综合久久av| 国产欧美一区二区精品忘忧草| 在线观看国产精品网站| 国产99久久精品| 免费的成人av| 亚洲成人av中文| 国产精品久久久久久久裸模| 精品久久久久久亚洲综合网| 精品视频在线免费观看| av欧美精品.com| 国产精品一区免费视频| 日本美女视频一区二区| 亚洲精品国产精品乱码不99 | 综合自拍亚洲综合图不卡区| 日韩欧美电影一区| 色偷偷成人一区二区三区91| 国产99久久久国产精品免费看| 久久精品国产一区二区三区免费看| 亚洲精品伦理在线| 国产精品二区一区二区aⅴ污介绍| 日韩一级黄色大片| 日韩一级片网址| 欧美一级夜夜爽| 337p亚洲精品色噜噜噜| 337p亚洲精品色噜噜狠狠| 欧美天堂亚洲电影院在线播放| 色婷婷久久久综合中文字幕| 99热精品国产| 99久久精品情趣| 丁香六月久久综合狠狠色| 国产成人三级在线观看| 国产高清在线精品| 国产精品亚洲人在线观看| 国产一区久久久| 国产乱子伦一区二区三区国色天香| 日韩高清中文字幕一区| 日韩av在线发布| 免费一级片91| 精品亚洲成av人在线观看| 精品一区二区三区免费| 国产一区二区三区在线观看精品| 精品一区精品二区高清| 精品写真视频在线观看| 精品中文字幕一区二区小辣椒| 青娱乐精品视频| 久久99精品国产麻豆不卡| 国产在线一区观看| 国产大陆a不卡| 99久久精品国产一区二区三区| 99视频精品全部免费在线| 在线观看中文字幕不卡| 欧美日韩精品免费观看视频| 日韩一级在线观看| 国产午夜亚洲精品羞羞网站| 亚洲欧美自拍偷拍| 亚洲妇熟xx妇色黄| 激情综合色综合久久| 国产精品77777竹菊影视小说| 欧美成人三级在线| 久久久久久久久免费| 亚洲人精品午夜| 免费在线观看日韩欧美| 国产成人h网站| 欧美天堂一区二区三区| 精品国产百合女同互慰| 亚洲视频在线一区| 奇米影视一区二区三区| 成人免费视频视频在线观看免费| 欧美这里有精品| 亚洲精品在线观看网站| 亚洲精品国产一区二区精华液| 久久国产剧场电影| 色综合久久天天| 久久新电视剧免费观看| 亚洲欧美日韩在线| 精品影视av免费| 欧美日免费三级在线| 久久久.com| 男男成人高潮片免费网站| 91在线免费看|