91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-25
  • 語言: 其他
  • 標(biāo)簽: gobackN??

資源簡介

計(jì)算機(jī)網(wǎng)絡(luò)數(shù)據(jù)鏈路層gobackn協(xié)議 typedef struct{ unsigned char kind; //FRAME_DATA unsigned char ack; //ACK number unsigned char seq; //seq bumber unsigned char data[PKT_LEN]; //傳輸數(shù)據(jù) unsigned int padding; //CRC校驗(yàn)和 }frame;

資源截圖

代碼片段和文件信息

#include?
#include?
#include?“protocol.h“
#include?“datalink.h“
#define?inc(k)?if(k#define?DATA_TIMER??2800
#define?MAX_SEQ?7
#pragma?comment(lib“Protocol.lib“)

typedef?struct{?
????unsigned?char?kind;??????????//frame_DATA?
????unsigned?char?ack; ?//ACK?number
????unsigned?char?seq; ?//seq?bumber
????unsigned?char?data[PKT_LEN];?//傳輸數(shù)據(jù)?
????unsigned?int??padding;???????//CRC校驗(yàn)和?
}frame;


static?unsigned?char?frame_nr?=?0buffer[MAX_SEQ+1][PKT_LEN]?nbuffered=0;
static?unsigned?char?frame_expected?=?0ack_expected=0next_frame_to_send=0;
static?int?phl_ready?=?0;


int?between(unsigned?char?aunsigned?char?bunsigned?char?c) //判斷幀有沒有在當(dāng)前窗口中
{
if(((a<=b)&&(b return?1;
else
return?0;
}



static?void?put_frame(unsigned?char?*frame?int?len)
{
????*(unsigned?int?*)(frame?+?len)?=?crc32(frame?len);
????send_frame(frame?len?+?4);
????phl_ready?=?0;
}


static?void?send_data_frame(void) //將幀傳遞給物理層傳送,并開始計(jì)時器計(jì)時
{
????frame?s;
s.kind?=?frame_DATA;
s.seq?=?next_frame_to_send;
s.ack?=?(frame_expected+MAX_SEQ)%(MAX_SEQ+1);
memcpy(s.databuffer[next_frame_to_send]PKT_LEN);
dbg_frame(“Send?DATA?%d?%d?ID?%dwindows?%d\n“?s.seq?s.ack?*(short?*)s.datanbuffered);
put_frame((unsigned?char?*)&s?3?+?PKT_LEN);
????start_timer(next_frame_to_send?DATA_TIMER);

}




int?main(int?argc?char?**argv)
{
????int?event?arg;
????frame?f;
????int?len?=?0;
int?i;
????protocol_init(argc?argv);?
????lprintf(“Designed?by?Su?Shihao?build:?“?__DATE__“??“__TIME__“\n“);

????disable_network_layer(); //開始狀態(tài),網(wǎng)絡(luò)層禁止遞交分組

????for?(;;)?{
????????event?=?wait_for_event(&arg);
switch?(event)?{
????????case?NETWORK_layer_READY: //網(wǎng)絡(luò)層有分組要發(fā)送
get_packet(buffer[next_frame_to_send]);
nbuffered++;
????????????send_data_frame();
inc(next_frame_to_send);
break;

????????case?PHYSICAL_layer_READY: //物理層準(zhǔn)備
????????????phl_ready?=?1;
????????????break;

????????case?frame_RECEIVED: //一個數(shù)據(jù)幀到達(dá)
????????????len?=?recv_frame((unsigned?char?*)&f?sizeof?f);
????????????if?(len?????????????????dbg_event(“****?Receiver?Error?Bad?CRC?Checksum\n“);
break;
}//CRC校驗(yàn)?

if?(f.kind?==?frame_DATA)??
{
dbg_frame(“Recv?DATA?%d?%d?ID?%d\n“?f.seq?f.ack?*(short?*)f.data);
if?(f.seq?==?frame_expected)?//接收一幀?
{
put_packet(f.data?len?-?7);
inc(frame_expected);
}



while(between(ack_expectedf.acknext_frame_to_send))//?檢查n-1,n-2等ack并確認(rèn)
{
nbuffered=nbuffered-1;
stop_timer(ack_expected);
inc(ack_expected);
}
}

break;?

????????case?DATA_TIMEOUT: //TIMER超時,重傳發(fā)送窗口中所有幀
????????????dbg_event(“----?DATA?%d?timeout\n“?arg);?
next_frame_to_send=ack_expected;
for(i=1;i<=nbuffered;i++)
{
send_data_frame();
inc(next_frame_to_send);
}
????????????break;
????????}




????????if?(nbuffered????????????

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3181??2013-11-23?23:44??gobackn\datalink.c

?????文件???????3476??2009-10-19?16:46??gobackn\datalink.dsp

?????文件????????524??2009-10-16?10:23??gobackn\datalink.dsw

?????文件????????518??2009-10-16?12:34??gobackn\datalink.h

?????文件???????1831??2009-10-19?16:46??gobackn\protocol.h

?????文件???????5932??2009-10-19?22:57??gobackn\Protocol.lib

?????目錄??????????0??2013-11-25?13:22??gobackn

-----------?---------??----------?-----??----

????????????????15462????????????????????7


評論

共有 條評論