相同的绑定端口UDP套接字并在所有端口上接收数据

时间:2017-04-19 11:48:52

标签: c sockets udp bind winsock

我需要做一个重要的测试。测试条件如下:

我正在使用winsock,我有2个UDP套接字(Sock-A和Sock-B),它们带有SO_REUSEADDR选项,它们都绑定到一台PC上的端口1000。 它们都将UDP数据包传输到另一个套接字(Sock-C),而位于不同LAN的Sock-C接收它们的消息。

Sock-C用一些消息回应他们,但不幸的是我只能看到Sock-A(已经早点打开)只是收到消息,而Sock-B并没有得到任何东西。当我关闭Sock-A时,我可以看到Sock-B开始接收消息。

你们中的任何人都知道如何让Sock-A和Sock-B都接收来自Sock-C的消息?

谢谢〜

1 个答案:

答案 0 :(得分:0)

这是正常行为。我认为这不能通过在同一端口上监听2个套接字来完成。

为什么要将2个套接字绑定到同一个端口?

阅读Socket options SO_REUSEADDR and SO_REUSEPORT, how do they differ? Do they mean the same across all major operating systems?

在linux中它甚至会尝试在2个套接字之间均匀分布数据报,因此它是随机的。您需要更改发送/接收数据包的方式。