我是Winsock编程新手,所以如果这是一个“愚蠢”的问题,请提前道歉。缺少UDP发送数据包
我写了一个Windows应用程序,通过UDP发送数据到外部设备。由于UDP是外部设备支持的唯一协议,因此我无法使用更强大的协议,例如TCP。现在
,如果我的程序使说6调用快速连续WSASentTo,两件事情将会发生:
如果以前的消息最近被发送的,并且目标设备仍然在Windows' ARP缓存,然后所有6条消息都发送到外部设备。
但是,如果设备不再位于Windows的ARP缓存中,则只会发送一个或两个消息。其他人似乎在某处消失。
我的应用程序使用它调用的每个WSASendTo不同的时间缓冲,所以我的应用程序不应该覆盖它自己的数据。我也认为我有WSASendTo设置正确的重叠I/O。消息非常小(每个消息只有大约50个数据字节),所以我无法想象我会在任何地方溢出缓冲区。 “网络”由PC和目标设备组成,只需一条cat5线缆即可连接两者。
虽然我可以只是添加一个常规的“心跳”,以保持设备在Windows的ARP缓存(可能会),但我仍然担心有些事情没有按照应有的方式工作。
任何想法?
谢谢。这与我的观察结果一致。目前我通过arp命令添加了一个静态ARP表项。在适当的时候,我会找到一个更好的方式来做到这一点。 –