C语言 在单个端口上配置多个 UDP 套接字



我正在尝试使用 UDP 实现点对点聊天应用程序,我想知道如何将程序扩展到多个用户。

据我了解,UDP 只需要一个套接字即可使用 recvfromsendto 功能发送和接收数据。使用传递给这些函数的地址字段中的数据,我可以确定我正在与哪个用户通信。

想知道我是否可以在同一端口上为我正在与之交谈的每个对等体创建多个 UDP 套接字。这样,如果数据来自对等 X,则数据将转到 UDP 端口并传递到"绑定"到 X 地址的相应套接字。

无论如何,我可以在仍然使用 UDP 的同时做到这一点吗?

是的,您可以在绑定 UDP 套接字(包括第一个在内的所有套接字)之前指定SO_REUSEADDR(在 Linux 上SO_REUSEPORT),然后将每个套接字连接到适当的目标,但这真的没有必要。只需根据其源地址调度到达单个套接字的每条消息。

最新更新