在单个端口上配置多个 UDP 套接字
Configuring multiple UDP sockets on a single port
我正在尝试使用 UDP 实现点对点聊天应用程序,我想知道如何将该程序扩展到多个用户。
据我了解,UDP 只需要一个套接字即可使用recvfrom
和sendto
函数发送和接收数据。使用传递给这些函数的地址字段中的数据,我可以确定我正在与哪个用户通信。
我想知道是否可以在同一个端口上为每个与我通话的对等方创建多个 UDP 套接字。这样,如果数据来自对等 X,则数据将进入 UDP 端口并传递到适当的套接字,该套接字是 'bound' 到 X 的地址。
有什么方法可以让我在使用 UDP 的同时做到这一点?
是的,您可以在绑定 UDP 套接字之前指定 SO_REUSEADDR(SO_REUSEPORT on Linux)(所有 套接字,包括第一个) ,然后将每个套接字连接到适当的目标,但这真的没有必要。只需根据其源地址分派到达单个套接字的每条消息。
我正在尝试使用 UDP 实现点对点聊天应用程序,我想知道如何将该程序扩展到多个用户。
据我了解,UDP 只需要一个套接字即可使用recvfrom
和sendto
函数发送和接收数据。使用传递给这些函数的地址字段中的数据,我可以确定我正在与哪个用户通信。
我想知道是否可以在同一个端口上为每个与我通话的对等方创建多个 UDP 套接字。这样,如果数据来自对等 X,则数据将进入 UDP 端口并传递到适当的套接字,该套接字是 'bound' 到 X 的地址。
有什么方法可以让我在使用 UDP 的同时做到这一点?
是的,您可以在绑定 UDP 套接字之前指定 SO_REUSEADDR(SO_REUSEPORT on Linux)(所有 套接字,包括第一个) ,然后将每个套接字连接到适当的目标,但这真的没有必要。只需根据其源地址分派到达单个套接字的每条消息。