-
大小: 203KB文件類型: .rar金幣: 1下載: 0 次發(fā)布日期: 2021-06-13
- 語(yǔ)言: C/C++
- 標(biāo)簽: 計(jì)網(wǎng)實(shí)驗(yàn)??
資源簡(jiǎn)介
計(jì)網(wǎng)實(shí)驗(yàn) 數(shù)據(jù)鏈路層實(shí)驗(yàn) 源代碼 C語(yǔ)言實(shí)現(xiàn) 選擇重傳協(xié)議
代碼片段和文件信息
#include?
#include?
#include?“protocol.h“
#include?“datalink.h“
#define?MAX_SEQ?31
#define?DATA_TIMER?3800//calculagraph?timer
#define?ACK_TIMER?1100
#define?NR_BUFS?16???//windows?number
#define?inc(k)if(k
typedef?enum{falsetrue}bool;
typedef?unsigned?char?seq_nr;//sequence?or?ack?number
typedef?struct{
unsigned?char?info[PKT_LEN];
}packet;//packet?definition
static?int?phl_ready?=?0;
bool?no_nak=true;
typedef?struct?frame?{?
????unsigned?char?kind;?//?frame_DATA?
????seq_nr?ack;//acknowledgement?number
????seq_nr??seq;//sequence?number
????packet?data;?//the?network?layer?packet
????unsigned?int??padding;
}frame;
static?int?between(seq_nr?aseq_nr?bseq_nr?c){
??????if((a?<=?b?&&?b???????????return?true;
??????else
??????????return?false;?
}
//add?crc
static?void?put_frame(unsigned?char?*frame?int?len)
{
????*(unsigned?int?*)(frame?+?len)?=?crc32(frame?len);
????send_frame(frame?len?+?4);
????phl_ready?=?0;
}
//send?data?to?physical?layer
static?void?send_data(unsigned?char?fkseq_nr?frame_nrseq_nr?frame_expectedpacket?buffer[])
{
????frame?s;
????s.kind?=?fk;
????s.seq?=?frame_nr;//insert?sequence?number?into?frame
????s.ack?=?(frame_expected+?MAX_SEQ)%(MAX_SEQ+1);//piggyback?ack
if(fk?==?frame_DATA)
memcpy(s.data.info?buffer[frame_nr%NR_BUFS].info?PKT_LEN);//insert?packet?into?frame
if(fk?==?frame_NAK)
no_nak?=?false;??//one?nak?per?frameplease
????dbg_frame(“Send?DATA?%d?%d?ID?%d\n“?s.seq?s.ack?*(short?*)s.data.info);
if?(fk?==?frame_DATA)
????? put_frame((unsigned?char?*)&s?3?+?PKT_LEN);//put?CRC?following?the?frame
if(fk?==?frame_NAK||fk==frame_ACK)
put_frame((unsigned?char?*)&s?2);//put?CRC?following?the?frame
????if(fk?==?frame_DATA)
start_timer(frame_nr%NR_BUFS?DATA_TIMER);
stop_ack_timer();//no?need?for?separate?ack?frame
}
int?main(int?argc?char?**argv){
????
int?eventarglen=0;
????int?i;//contol?the?number?of?circle?of?arrived
????frame?r;//scratch?variable
????seq_nr?next_frame_to_send;//the?upper?of?the?send‘s?window
????seq_nr?ack_expected;//the?lower?of?the?send‘s?window
????seq_nr?frame_expected;//the?lower?of?the?reciver‘s?window
????seq_nr?too_far;//the?upper?of?the?reciver‘s?window
????seq_nr?nbuffered;//currently?window
????packet?out_buf[NR_BUFS];//buffer?for?the?outbound?stream
????packet?in_buf[NR_BUFS];//buffer?for?the?in?stream
????bool?arrived[NR_BUFS];
????
????enable_network_layer();
????//disable_network_layer();//allow?netword_layer_ready?events
????ack_expected?=?0;
????next_frame_to_send?=?0;
????frame_expected?=?0;
????too_far?=?NR_BUFS;
????nbuffered?=?0;??
????for(i?=?0;i?????????arrived[i]?=?false;
protocol_init(argc?argv);?
????lprintf(“Designed?by?chenchen_07415_071419?build:?“?__DATE__“??“__TIME__“\n\n“);
????while(true){
????????event?=?wait_for_event(&arg);
?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????47509??2009-12-01?14:32??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件??????59499??2009-12-01?14:32??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件???????6264??2009-12-01?19:03??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件???????3476??2009-10-19?16:46??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件????????524??2009-10-16?10:23??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件?????176162??2009-12-01?14:02??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件????????518??2009-10-16?12:34??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件?????199324??2009-12-01?14:02??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件??????50176??2009-12-01?14:27??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件??????48640??2009-12-01?14:27??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件?????427008??2009-12-01?14:02??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件???????1516??2009-12-01?14:02??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\datali
?????文件??????94208??2009-10-19?22:57??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\Protocol.dll
?????文件???????1831??2009-10-19?16:46??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\protocol.h
?????文件???????5932??2009-10-19?22:57??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議\Protocol.lib
?????目錄??????????0??2010-01-02?12:54??數(shù)據(jù)鏈路層—選擇性重傳協(xié)議
-----------?---------??----------?-----??----
??????????????1122587????????????????????16
評(píng)論
共有 條評(píng)論