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

  • 大小: 425KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-10
  • 語言: C/C++
  • 標簽: go??back??n??gobackn??c語言??

資源簡介

模仿數據鏈路層的gobackn協議 /*該協議是搭載ack的回退n步協議*/ #include #include "protocol.h" #define max_seq 7 #define flag 126 #define ESC 100 #define wait_time 2700 //發送計時器等待的時間 #define ack_wait_time 280 static int phl_ready = 0; unsigned char buf[max_seq+1][270]; unsigned char ack[8]; //發送空的ack幀 unsigned char in_buf[600], last_buf[520];//接收時的緩沖區;去掉冗余之后的緩沖區,為防備因誤碼兩幀合并為一幀而定義了很大一個數組 int nbuffered=0; //發送的幀數 int buf_size[max_seq+1]; //記下以發送各幀的幀長 int next_frame_to_send=0; int frame_in_phl=0; //用于成幀 int frame_expected=0; int ack_expected=0; int between(int a,int b,int c) { if( ((a<=b)&&(b<c)) || ((c<a)&&(a<=b)) || ((b<c)&&(c<a)) ) return 1; else return 0; } //判斷幀尾,防止出現誤判esc esc flag為數據的情況 int end_flag(int in_len) { int count=0; int i; if(in_len=0;i--)//記錄flag前的esc數目 count++; return count%2; //若flag前的esc為偶數,則為幀尾 }//成幀函數--數據幀 void send_frame(char *my_buf,int len) { int n; buf[frame_in_phl][0]=(frame_expected+max_seq)%(max_seq+1); //ack buf[frame_in_phl][1]=frame_in_phl; //發送幀的幀號 for(n=0;n<len;n++) buf[frame_in_phl][n+2]=my_buf[n]; //將處理過的新幀賦值到緩沖區中 len=len+2; *(unsigned int *)(buf[frame_in_phl]+len) = crc32(buf[frame_in_phl],len); //在原始幀的基礎上加檢驗和 buf_size[frame_in_phl]=len+4; //記錄當前幀的長度,包括3個幀頭,4個檢驗和 nbuffered=nbuffered+1; //緩沖區占用數加一 frame_in_phl=(frame_in_phl+1)%(max_seq+1); } //成幀函數--ack幀 void send_ack() //ack幀的處理 { ack[0]=(frame_expected+max_seq)%(max_seq+1); ack[1]=max_seq+10; //ack幀的序號位,使ack[1]==frame_expected恒不成立 *(unsigned int *)(ack+2) = crc32(ack,2); //在原始幀的基礎上加檢驗和 } //主函數 int main(int argc, char **argv) { int event, arg, n , m , i , j , len = 0 ,in_len = 0; unsigned char my_buf[260]; int phl_wait=0; //在物理層中還沒有被發送的幀 protocol_init(argc, argv); enable_network_layer(); for (;;) { event = wait_for_event(&arg); switch (event) { case NETWORK_LAYER_READY:

資源截圖

代碼片段和文件信息

/*該協議是搭載ack的回退n步協議*/
#include?
#include?“protocol.h“

#define?max_seq?7
#define?flag?126?????
#define?ESC?100
#define?wait_time?2700 //發送計時器等待的時間
#define?ack_wait_time?280

static?int?phl_ready?=?0;
unsigned?char?buf[max_seq+1][270];
unsigned?char?ack[8];????//發送空的ack幀

unsigned?char?in_buf[600]?last_buf[520];//接收時的緩沖區;去掉冗余之后的緩沖區為防備因誤碼兩幀合并為一幀而定義了很大一個數組
int?nbuffered=0;??????????????//發送的幀數
int?buf_size[max_seq+1];??????//記下以發送各幀的幀長
int?next_frame_to_send=0;?
int?frame_in_phl=0;???????????//用于成幀
int?frame_expected=0;
int?ack_expected=0;

int?between(int?aint?bint?c)
{
if(?((a<=b)&&(b return?1;
else?return?0;
}
//判斷幀尾防止出現誤判esc?esc?flag為數據的情況
int?end_flag(int?in_len)
{
int?count=0;
int?i;
if(in_len<=0)
return?1;
for(i=in_len-1;in_buf[i]==ESC&&i>=0;i--)//記錄flag前的esc數目
count++;
return?count%2;????????????????????//若flag前的esc為偶數,則為幀尾
}//成幀函數--數據幀
void?send_frame(char?*my_bufint?len)
{
int?n;
buf[frame_in_phl][0]=(frame_expected+max_seq)%(max_seq+1); //ack
buf[frame_in_phl][1]=frame_in_phl; //發送幀的幀號
for(n=0;n buf[frame_in_phl][n+2]=my_buf[n]; //將處理過的新幀賦值到緩沖區中
len=len+2;
*(unsigned?int?*)(buf[frame_in_phl]+len)?=?crc32(buf[frame_in_phl]len); //在原始幀的基礎上加檢驗和
buf_size[frame_in_phl]=len+4; //記錄當前幀的長度包括3個幀頭,4個檢驗和
nbuffered=nbuffered+1; //緩沖區占用數加一
frame_in_phl=(frame_in_phl+1)%(max_seq+1);
}
//成幀函數--ack幀
void?send_ack() //ack幀的處理
{
ack[0]=(frame_expected+max_seq)%(max_seq+1);
ack[1]=max_seq+10; //ack幀的序號位,使ack[1]==frame_expected恒不成立
*(unsigned?int?*)(ack+2)?=?crc32(ack2); //在原始幀的基礎上加檢驗和
}
//主函數
int?main(int?argc?char?**argv)
{
????int?event?arg?n??m??i??j??len?=?0?in_len?=?0;
unsigned?char?my_buf[260];
int?phl_wait=0;????//在物理層中還沒有被發送的幀

????protocol_init(argc?argv);?
????enable_network_layer();

????for?(;;)?{
????????event?=?wait_for_event(&arg);

????????switch?(event)?{
????????case?NETWORK_layer_READY:
????????????len?=?get_packet(my_buf);?
phl_wait++;
send_frame(my_buflen);
stop_ack_timer();

????????????if?(phl_ready)?{
????????????????for(j=0;j {
//幀結構為?ack?seq?內容
//每幀尾部加發送一個flag

for?(i?=?0;?i?ame_to_send];?i++){
if?((buf[next_frame_to_send][i]==flag)?||?(buf[next_frame_to_send][i]==ESC)?)
send_byte(ESC);
send_byte(buf[next_frame_to_send][i]);
}
send_byte(flag);//幀尾

start_timer(next_frame_to_sendwait_time); //發送完啟動相應的定時器
next_frame_to_send=(next_frame_to_send+1)%(max_seq+1);
}
????????????????phl_ready??=?0; //記錄物理層當前狀態為
phl_wait?=?phl_wait-j;
????????????}
????????????break;

????????case?PHYSICAL_layer_READY:
????????????if?(phl_wait)?{ //若有未發送的幀便發送
for(j=0;j {

for?(i?=?0;?i?ame_to_send];?i++){
if?(?(buf[next_fram

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

?????文件???????3574??2007-10-24?14:11??gobackn\datalink.dsp

?????文件????????541??2007-10-24?12:53??gobackn\datalink.dsw

?????文件??????66560??2008-12-02?21:26??gobackn\datalink.ncb

?????文件???????1215??2008-09-27?22:58??gobackn\protocol.h

?????文件????????252??2008-12-02?21:00??gobackn\datalink.plg

?????文件??????74690??2008-09-27?22:51??gobackn\Debug\protocol.lib

?????文件??????45624??2008-09-27?22:51??gobackn\Release\protocol.lib

?????文件??????33792??2008-12-02?21:00??gobackn\Release\vc60.idb

?????文件???????5242??2008-12-02?21:00??gobackn\Release\datalink.obj

?????文件?????180508??2008-12-02?14:23??gobackn\Release\datalink.pch

?????文件??????69632??2008-12-02?21:00??gobackn\Release\datalink.exe

?????文件??????79872??2008-12-02?19:17??gobackn\性能測試記錄表.doc

?????文件??????50688??2008-12-02?19:28??gobackn\源程序清單-樣板.DOC

?????文件??????37888??2008-12-02?19:21??gobackn\實驗報告評語.doc

?????文件??????41994??2008-12-02?18:38??gobackn\測試數據\datalink-A5e-5.log

?????文件?????123963??2008-12-02?18:16??gobackn\測試數據\datalink-A?1e-7.log

?????文件??????65335??2008-12-02?18:38??gobackn\測試數據\datalink-Af?–ber?1e-4.log

?????文件??????96352??2008-12-02?18:16??gobackn\測試數據\datalink-Af?–ber?5e-4.log

?????文件??????64971??2008-12-02?17:19??gobackn\測試數據\datalink-Af.log

?????文件??????69573??2008-12-02?17:55??gobackn\測試數據\datalink-Afl.log

?????文件??????43509??2008-12-02?17:41??gobackn\測試數據\datalink-Afle.log

?????文件??????67138??2008-12-02?17:33??gobackn\測試數據\datalink-Afs.log

?????文件??????35678??2008-12-02?16:57??gobackn\測試數據\datalink-A無參數.log

?????文件??????41921??2008-12-02?18:38??gobackn\測試數據\datalink-B5e-5.log

?????文件?????124850??2008-12-02?18:16??gobackn\測試數據\datalink-B?1e-7.log

?????文件??????65543??2008-12-02?18:38??gobackn\測試數據\datalink-Bf?–ber?1e-4.log

?????文件??????95321??2008-12-02?18:16??gobackn\測試數據\datalink-Bf?–ber?5e-4.log

?????文件??????65507??2008-12-02?17:19??gobackn\測試數據\datalink-Bf.log

?????文件??????70150??2008-12-02?17:55??gobackn\測試數據\datalink-Bfl.log

?????文件??????43448??2008-12-02?17:41??gobackn\測試數據\datalink-Bfle.log

............此處省略13個文件信息

評論

共有 條評論