向各位大俠們請教一下關于W5500芯片UDP發送報文到不同IP的問題!
電路板上的DSP通過SPI配置W5500,建立了3個socket,采用UDP點對點模式通過交換機向3臺電腦(3個IP地址)發送同樣的報文,每個socket每秒發送1次。問題描述如下:
1、3個電腦都連接網線時,接收UDP報文均正常;
2、只有2個電腦連接網線時,每秒時,期望每臺電腦只收到1組報文,但實際測驗時一臺電腦收到1組報文,另一臺電腦收到2組報文;
3、只有1個電腦連接網線時,每秒時,期望該電腦只收到1組報文,但實際測驗時該電腦收到3組報文。不經過交換機時,也是同樣的現象。
問題歸納:
1、W5500向3個IP發UDP報文,無論所連接電腦是1臺、2臺或3臺,所收到的總報文數始終是3組,只是這3組報文會分配到已連接網線電腦上;
2、連接電腦1臺或2臺時,從每秒3組報文的時標可以看出,有1組報文是上一秒的,有2組報文是本次的。
疑問:
1、我之前理解的是:UDP發送報文時只需設定目的IP和目的埠就行了,未連接的IP被直接忽略,報文丟掉,而不應該發送到另外的IP上去?
2、是否需要實時去查詢已連接的IP,確認連接的可發送,未連接的就不發送。如果如此,該如何實作?
3、W5500的強制ARP是否與此有關?
謝謝!
uj5u.com熱心網友回復:
3個IP?能收到目的IP不是自己的資料報?加一個序號或者時間戳應該可以。
uj5u.com熱心網友回復:
UDP的特性之一就是無連接,除非對方會回復訊息,否則無法得知對方是否可達,無法得知是否收到;你在問題里遇到的情況,應該是你代碼本身的邏輯有問題造成的。請仔細檢查代碼。一旦確定了IP、協議、埠,就一定不會發生這種發錯的情況。
uj5u.com熱心網友回復:
檢查了一下代碼邏輯,發現只初始化了一個socket 0,UDP模式,每秒周期到后分別向3個IP發同樣的報文(報文間加有少許延時)。
這種使用方式是否有問題,是不是應該建立3個socket,再分別向3個IP發報文?
uj5u.com熱心網友回復:
可以一個也可以三個。問題應該還是在你的代碼。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/7491.html
標籤:網絡協議與配置
上一篇:求解兩單計算機網路計算
