当我尝试绑定多个套接字时,我在代码中发现了一个问题。我试着解释一下情况,我有一个由两部分组成的应用程序,一个是用 C 编写的,运行在 machine_1 上,另一个是用 Java 编写,运行在 machine_2 上。C 程序应该能够通过一个端口将 udp 数据包发送到正在侦听它们的 machine_2 上的 4 个端口。反之亦然,machina_2 应该通过一个输出端口将 udp 数据包发送到 machine_1 上的 4 个相应端口。
我遇到的问题在 machine_1 上:
- 我在那里有两个线程,一个处理到 machine_2 的传出数据,一个处理传入数据。在第一个线程(处理传出数据)中,我创建了 4 个套接字(具有 4 个不同的端口)来寻址 machine_2 上的相应套接字。在那个方向上工作得很好......
- 但是当我尝试为来自 machine_2 的传入数据创建套接字时,我想使用与 machine_2 上的传入数据相同的端口号,但是当我尝试绑定套接字时遇到了问题。给我
: Address already in use
错误。
我需要一些关于如何在 C 应用程序内的 machine_1 上为传出和传入端口设置套接字配置的帮助。也许还有一个关于如何使用该select()
函数监听所有 4 个传入套接字的示例。
如果需要代码示例,我可以在此处添加它们,但正如我所说,它仅适用于 thread_1,它通过一个套接字处理传出数据到 machine_2 上的 4 个不同套接字。
在此先感谢您的帮助!
我希望所附的图片可以更多地解释这种情况,重要的是我想在两台机器上使用相同的端口号来接收数据。意味着 machine_1 上的 port_1 与 machine_2 上的 port_1 具有相同的端口号,依此类推...