UDP广播的问题?

时间:2010-09-01 13:11:31

标签: winsock

如果我使用sendto()使用UDP套接字广播并立即调用recvfrom()。我收到的是我刚刚从同一台PC发来的广播信息吗?这个循环可以避免一些事情如何?任何解释为什么我会经历这样的循环回事呢?我的意思是广播消息在本地n / w ??

中停留多长时间

1 个答案:

答案 0 :(得分:2)

这是正常行为。您需要了解UDP广播的实际工作方式。您的本地PC与您正在广播的同一网络,因此它接收正在发送的广播。您无法避免广播被发送回本地PC,但您可以做的是查看recvfrom()报告的发送IP /端口,如果它来自拥有广播它的套接字的同一进程,则忽略该消息。

否则,切换到多播而不是UDP广播(特别是因为IPv6中不支持UDP广播)。通过多播,接收器必须订阅多播才能接收消息,因此只需让您的发送PC订阅自己的多播即可。