|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
KIEL C51編寫的UDP打包程序 |
| 作者:whutfrank 欄目:通信技術(shù) |
本人現(xiàn)在在編udp打包的程序,下面是相關(guān)的程序: 在程序頭文件中定義的UDP數(shù)據(jù)報的結(jié)構(gòu): struct tagEthernet { _US len; // 為data字段的實際長度 _UC dest[6]; _UC src[6]; _US type; _UC ethdata[1]; }; struct tagIP { _UC ver_hl; _UC tos; _US len; _US id; _US flag_off; _UC ttl; _UC proto; _US chksum; union { _UL longSrc; _UC byteSrc[4]; } src; union { _UL longDest; _UC byteDest[4]; } dest; _UC ipdata[1]; }; struct tagUDP { _US src; _US dest; _US len; _US chksum; _UC udpdata[1]; }; extern _UC xdata buffer[2400]; #define p ((struct tagEthernet*)buffer) // IP層提供的函數(shù) #define iphdr ((struct tagIP*)(p->ethdata)) void ip_input(); void ip_output(_UL dest, _UC proto); // UDP層提供的函數(shù) #define pUdp ((struct tagUDP*)(((struct tagIP*)(p->ethdata))->ipdata)); void udp_input(_US len); void udp_output(_US L); 下面是部分KEIL C51編的UDP打包程序 //UDP打包函數(shù) void udp_output(_US L) { //設置UDP頭 pUdp->src=1025; pUdp->dest=1024; pUdp->len=L+8; pUdp->chksum=udp_chksum(); //設置IP頭、以太網(wǎng)幀頭 ip_output(iphdr->src.longSrc,17); //proto=17表示上層協(xié)議是udp //發(fā)送數(shù)據(jù) p->len=(pUdp->len)+(20+14); //20為IP頭長度、14為以太幀長度 Send(); } 在對UDP打包程序進行編譯時,總是提示dest,src,len以及chksum沒有定義或語法錯誤。UDP提供的函數(shù)中這個宏定義#define pUdp ((struct tagUDP*)(((struct tagIP*)(p->ethdata))->ipdata));好象沒起作用。 懇請那位對UDP有所 了解的大俠呢感指點一下。謝謝啦! |
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |