简单的UDP监听需要打开w网路岗才能接收到数据的原因和解决办法
在做網(wǎng)絡(luò)通訊項目過程中遇到一個問題:兩張光纖通訊網(wǎng)卡之間通過單模光纖發(fā)送UDP數(shù)據(jù),而只有打開網(wǎng)卡數(shù)據(jù)采集軟件如:網(wǎng)路崗或Wireshark時才能看到數(shù)據(jù)包,用普通的網(wǎng)絡(luò)調(diào)試助手或者自己開發(fā)的數(shù)據(jù)采集軟件無法收到數(shù)據(jù)。
經(jīng)過問題定位,發(fā)現(xiàn)是兩張網(wǎng)卡的mac地址不對造成的:在UDP通訊過程中,發(fā)送端需要知道目標(biāo)地址的mac地址,而接收端在接收時會判斷數(shù)據(jù)包是否與自己的mac地址一致,如果一致就接收和處理數(shù)據(jù),不一致就不接收和處理。網(wǎng)路崗或Wireshark在采集網(wǎng)卡上的UDP數(shù)據(jù)時,屏蔽掉了mac地址,所以可以收到相同IP地址的數(shù)據(jù)并顯示,但是普通的UDP數(shù)據(jù)采集軟件或自己開發(fā)的UDP數(shù)據(jù)采集軟件不能做到這樣一步,所以只有在打開網(wǎng)路崗或Wrieshark軟件時,自己開發(fā)的軟件或網(wǎng)絡(luò)調(diào)試助手才采集到了數(shù)據(jù)。不打開網(wǎng)絡(luò)崗或Wireshark時,數(shù)據(jù)包被丟棄掉。
處理辦法:將接受端的mac地址設(shè)置為與發(fā)送端的mac地址相同,這樣就可以直接用網(wǎng)絡(luò)調(diào)試助手或者自己開發(fā)的軟件采集數(shù)據(jù)了。更進一步分析,兩張光纖網(wǎng)卡不在同一個局域網(wǎng)中,這樣進行UDP通訊時,發(fā)送端尋找目標(biāo)地址的網(wǎng)卡時不能獲取到,發(fā)送端通過發(fā)送ARP請求包獲取目標(biāo)地址網(wǎng)卡,不在同一局域網(wǎng)時,收不到目標(biāo)地址網(wǎng)卡返回的ARP包,所以就失敗了,網(wǎng)上有做上位機和下位機開發(fā)的人也遇到相似的問題,但是沒有說明解決辦法。還是記下來對以后開發(fā)有幫助。
物理網(wǎng)卡的mac地址設(shè)置可以在網(wǎng)上輕易找到,這里就不做多余的敘述了。
總結(jié)
以上是生活随笔為你收集整理的简单的UDP监听需要打开w网路岗才能接收到数据的原因和解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品经理的第二本书_笔记
- 下一篇: 内核模块化编程