freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

cbn協(xié)議實(shí)現(xiàn)(c語(yǔ)言)-在線瀏覽

2025-07-11 13:29本頁(yè)面
  

【正文】 //******************************************************************** //**********************計(jì)時(shí)器模塊 *********************************** void stoptimer(int)。//啟動(dòng)計(jì)時(shí)器 //********************************************************************* //**************************網(wǎng)絡(luò)各層之間傳送模塊 *********************** void tolayer3(int AorB,struct pkt packet)。//向第 5 層發(fā)送信息 二: include include include include extern int TRACE = 1。 /* 當(dāng)前第 5 層到第 4 層的信息數(shù) */ extern int nsimmax = 0。 float lossprob。 /* 包的數(shù)據(jù)位數(shù)丟失可能性 */ float lambda。 /* 送往第 3 層的包數(shù)量 */ static int nlost = 0。 /* 在網(wǎng)絡(luò)中被破壞的包 */ static int expectedseqnum = 0。 /* 下一次發(fā)送方要使用的包序號(hào) */ static int base。 /* 窗口包緩沖區(qū) */ static int winfront,winrear。 /* 緩沖窗口包的數(shù)量 */ struct msg buffer[MAXBUFSIZE]。 /* 緩沖區(qū)的頭尾指針 */ static int msgnum。 //包丟失 int packet_corrupt=0。 //包發(fā)送 extern int packet_correct=0。//重發(fā)包 int packet_timeout=0。 /* 事件清單 */ //相關(guān)接口函數(shù)的實(shí)現(xiàn) //計(jì)算校驗(yàn)和 ,即腳鏈和 1 的補(bǔ)碼和 void ComputeChecksum( struct pkt *packet) { int checksum。 checksum = packetseqnum。//求腳鏈 for ( i=0。 i++ ) //取最高位,按位相加 checksum = checksum + (int)(packetpayload[i])。//取反 packetchecksum = checksum。 int i。 checksum = checksum + 。 i20。 if ( (+checksum) == 0 )//檢查校檢和是否相加為 0 return (FALSE)。 } //A 端向外發(fā)送數(shù)據(jù) /* 被第五層調(diào)用,向另一端發(fā)送數(shù)據(jù) */ void A_output(struct msg message) { int i。 /* 如果的發(fā)送方下次使用序號(hào)小于滑動(dòng)窗口的最大序號(hào),那么補(bǔ)發(fā)包 */ if ( nextseqnum base+WINDOWSIZE ) { printf(A:新的包到達(dá),發(fā)送窗口不滿,新的包送往第 3 層! \n)。 = NOTUSED。 i20 。 /* 檢查是否出錯(cuò) */ ComputeChecksum (amp。 /* 送出包 */ tolayer3 (A, sendpkt)。 pktnum ++。 for (i=0。 i++) winbuf[winrear].payload[i]= [i]。 starttimer(A,RTT)。 A_input(sendpkt)。 /* 如果緩沖區(qū)滿,放棄并退出 */ if ( msgnum == MAXBUFSIZE) { printf ( 錯(cuò)誤:發(fā)送緩沖區(qū)已 滿 ?。?! \n)。 } /* 否則,將信息送入緩沖區(qū) */ else { printf(信息已送入緩沖區(qū) \n)。 //擁塞控制 ,防止擁塞 ,減小緩沖區(qū) for (i=0。 i++) buffer[bufrear].data[i] = [i]。 } } } //B 端向外發(fā)送數(shù)據(jù) /* 被第五層調(diào)用,發(fā)送數(shù)據(jù)到另一方 ,同 A 方相似 */ void B_output(struct msg message) { int i。 /* 如果發(fā)送窗口不滿 */ if ( nextseqnum base+WINDOWSIZE ) { printf(B:新的包到達(dá),發(fā)送窗口不滿,新的包送往第 3 層! !\n)。 = NOTUSED。 i20 。 /* puter checksum */ ComputeChecksum (amp。 /* send out packet */ tolayer3 (A, sendpkt)。 /* copy the packet to window packet buffer */ winrear = (winrear+1)%WINDOWSIZE。 winbuf[winrear] = sendpkt。 i20。 /* if it is the first packet in window, start timeout */ //if ( base == nextseqnum ) //{ //starttimer(A,RTT)。 // } /* update state variables */ nextseqnum = nextseqnum+1。 /* if buffer full, give up and exit*/ if ( msgnum == MAXBUFSIZE) { printf ( 錯(cuò)誤:發(fā)送緩沖區(qū)已滿 ! \n)。 } /* otherwise, buffer the message */ else { printf(緩沖區(qū)滿 !\n)。 for (i=0。 i++) buffer[bufrear].data[i] = [i]。 } } } //A 端接收數(shù)據(jù) void A_input(struct pkt packet) { struct pkt sendpkt。 /* 如果收到?jīng)]有被破壞的包并且確認(rèn)包收到 */ if ( (CheckCorrupted(packet) == FALSE) amp。 ( != NACK) ) { printf(A: ACK(確認(rèn)包 ) %d 被正確的收到 ,)。 /* 從窗口緩沖區(qū)刪去被確認(rèn)的包 */ winfront = (winfront+(+1base)) % WINDOWSIZE。 /* 改變窗口最小號(hào)確認(rèn)包 */ base = +1。 if ( base nextseqnum) { //starttimer(A,RTT)。 } /* 如果緩沖區(qū)不空發(fā)送新的包 */ while ( (msgnum!=0) amp。 (nextseqnumbase+WINDOWSIZE) ) { /* 創(chuàng)建包 */ = nextseqnum。 buffront = (buffront+1) % MAXBUFSIZE。 i20 。 /* 和確認(rèn) */ ComputeChecksum (amp。 /*如果是滑動(dòng)窗口的第一個(gè)包,開始超時(shí)檢測(cè) */ if ( base == nextseqnum ) //如果滑動(dòng)窗口最小的包等于下一次要發(fā)送的序號(hào) { //starttimer(A,RTT)。 } /* 送出包 */ tolayer3 (A, sendpkt)。 winbuf[winrear] = sendpkt。 /* 更新狀態(tài)變量 */ nextseqnum = nextseqnum+1。 } } else printf (A: 收到否定應(yīng)答,什么也沒有完成 !\n)。 int i。amp。 /* 發(fā)送應(yīng)答包 */ /* create packet */
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1