我有一個應用程序在循環中傳輸一些數據。 基礎協議是WinSock上的UDP。如果在每次發送操作後沒有添加睡眠(1ms),則大部分數據都不會發送(或wireshark無法捕獲)。您是否遇到過這樣的行爲,UDP不會處理循環中的重複發送?UDP傳輸性能
問候
Tugrul
我有一個應用程序在循環中傳輸一些數據。 基礎協議是WinSock上的UDP。如果在每次發送操作後沒有添加睡眠(1ms),則大部分數據都不會發送(或wireshark無法捕獲)。您是否遇到過這樣的行爲,UDP不會處理循環中的重複發送?UDP傳輸性能
問候
Tugrul
第一件事情,你應該檢查返回值,當您將數據發送到檢查數據是否發送成功與否。 第二件事,這可能發生UDP的內部緩衝區不能容納更多的數據,因爲以前的數據尚未傳輸。所以最簡單的解決方案是,每次發送數據之前,您都應該檢查UDP套接字是否可寫。您可以通過在該UDP套接字上調用「select」或「poll」來完成。
您是否檢查過發送函數的返回值? – 2011-04-04 14:35:51
實際上在WinSock上有一個TCP客戶端類,我檢查它是否與某些特定的錯誤代碼相關(但不是針對所有我認爲的) – tguclu 2011-04-04 15:54:26
這聽起來像非阻塞套接字,即緩衝區溢出。 – 2011-04-06 04:52:18