我是Winsock編程新手,所以如果這是一個「愚蠢」的問題,請提前道歉。缺少UDP發送數據包
我寫了一個Windows應用程序,通過UDP發送數據到外部設備。由於UDP是外部設備支持的唯一協議,因此我無法使用更強大的協議,例如TCP。現在
,如果我的程序使說6調用快速連續WSASentTo,兩件事情將會發生:
如果以前的消息最近被髮送的,並且目標設備仍然在Windows' ARP緩存,然後所有6條消息都發送到外部設備。
但是,如果設備不再位於Windows的ARP緩存中,則只會發送一個或兩個消息。其他人似乎在某處消失。
我的應用程序使用它調用的每個WSASendTo不同的時間緩衝,所以我的應用程序不應該覆蓋它自己的數據。我也認爲我有WSASendTo設置正確的重疊I/O。消息非常小(每個消息只有大約50個數據字節),所以我無法想象我會在任何地方溢出緩衝區。 「網絡」由PC和目標設備組成,只需一條cat5線纜即可連接兩者。
雖然我可以只是添加一個常規的「心跳」,以保持設備在Windows的ARP緩存(可能會),但我仍然擔心有些事情沒有按照應有的方式工作。
任何想法?
謝謝。這與我的觀察結果一致。目前我通過arp命令添加了一個靜態ARP表項。在適當的時候,我會找到一個更好的方式來做到這一點。 –