|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
tcp的跨網(wǎng)關(guān)實驗 |
| 作者:llllgsq 欄目:ARM技術(shù) |
我用2200ARM板作為客戶端,客戶端用ZLG/IP寫網(wǎng)絡(luò)連接程序,服務(wù)器端用VC寫服務(wù)器程序,希望能夠?qū)崿F(xiàn)客戶端與服務(wù)器端的數(shù)據(jù)接收與發(fā)送。在局域網(wǎng)內(nèi)成功實現(xiàn)數(shù)據(jù)的發(fā)送與接受,InterNet上若未跨網(wǎng)關(guān)還能接收發(fā)送,但跨網(wǎng)關(guān)后網(wǎng)絡(luò)程序無法通信,ZLG/IP不支持分段,所以我發(fā)送的數(shù)據(jù)只有100字節(jié),應(yīng)該不涉及分段的問題。不知是ZLG/IP還不夠完善,還是因為在跨網(wǎng)關(guān)的過程中,網(wǎng)關(guān)把數(shù)據(jù)丟棄了,請指教。 |
| 2樓: | >>參與討論 |
| 作者: zlgARM 于 2005/3/28 9:25:00 發(fā)布:
re: 原因比較多,你可以打電話咨詢020-22644385 |
|
| 3樓: | >>參與討論 |
| 作者: ddees 于 2005/3/28 18:30:00 發(fā)布:
你試試這樣改動 uint8 Send_Ip_To_LLC(struct _pkst *TxdData,uint8 *de_ip,uint8 net_number) { uint8 i,result; // 檢查是否屬于本IP段,同一網(wǎng)段內(nèi)最多65535臺節(jié)點 if((de_ip[0]&NetPort[net_number].My_Ip_Mark[0]) == (NetPort[net_number].My_Ip[0]&NetPort[net_number].My_Ip_Mark[0])) if((de_ip[1]&NetPort[net_number].My_Ip_Mark[1]) == (NetPort[net_number].My_Ip[1]&NetPort[net_number].My_Ip_Mark[1])) if((de_ip[2]&NetPort[net_number].My_Ip_Mark[2]) == (NetPort[net_number].My_Ip[2]&NetPort[net_number].My_Ip_Mark[2])) if((de_ip[3]&NetPort[net_number].My_Ip_Mark[3]) == (NetPort[net_number].My_Ip[3]&NetPort[net_number].My_Ip_Mark[3])) { for(i=0;i<MAX_ARP_TERM;i++) { OS_ENTER_CRITICAL(); // 關(guān)中斷保護數(shù)據(jù) if(NetPort[net_number].ARP_TERM[i].IP_NUM[2] == ((IP_NUMBER*)de_ip)->IP[2]) if(NetPort[net_number].ARP_TERM[i].IP_NUM[3] == ((IP_NUMBER*)de_ip)->IP[3]) if(NetPort[net_number].ARP_TERM[i].TTL > 0) // 如果ARP表的最后兩個數(shù)相等而且TTL>0表示,有對應(yīng)的MAC { NetPort[net_number].ARP_TERM[i].TTL = 100; // 刷新生存時間并發(fā)送數(shù)據(jù) OS_EXIT_CRITICAL(); // 開中斷退出保護 result = Ethernet_Send_Frame(TxdData,NetPort[net_number].ARP_TERM[i].MAC_NUM,IP_PACKED,net_number); return (result); // 返回 } OS_EXIT_CRITICAL(); // 開中斷退出保護 } Arp_Request(de_ip,net_number); // 請求對方MAC return (2); } // 不在IP段里,目標MAC地址變?yōu)榫W(wǎng)關(guān)的MAC地址 result = Ethernet_Send_Frame(TxdData,NetPort[net_number].My_Gateway,IP_PACKED,net_number); if(result == 0) return 0; return 3; } // 不在IP段里,目標MAC地址變?yōu)榫W(wǎng)關(guān)的MAC地址 result = Ethernet_Send_Frame(TxdData,NetPort[net_number].My_Gateway,IP_PACKED,net_number); 這個要改一下就行了 |
|
| 4樓: | >>參與討論 |
| 作者: llllgsq 于 2005/3/28 20:45:00 發(fā)布:
謝謝,我試試 |
|
| 5樓: | >>參與討論 |
| 作者: luck_zhan 于 2006/3/17 15:25:00 發(fā)布:
- 樓主,你的跨網(wǎng)關(guān)成功了嗎? 是用的三樓的方法嗎? |
|
| 6樓: | >>參與討論 |
| 作者: chinawzz 于 2006/12/20 20:06:00 發(fā)布:
我也碰到這個問題,樓主解決了沒? 我也碰到這個問題,樓主解決了沒? |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |