我正在尝试使用UDP实现点对点聊天应用程序,我想知道如何将程序扩展到多个用户。
据我了解,UDP只需要一个套接字即可使用recvfrom
和sendto
函数发送和接收数据。使用传递给这些函数的地址字段中的数据,我可以确定我正在与哪个用户通信。
我想知道是否可以在同一端口上为我正在与之交谈的每个对等端创建多个UDP套接字。这样,如果数据来自对等方X,那么数据将转到UDP端口并传递到“绑定”到X地址的相应套接字。
无论如何我仍然可以在使用UDP时执行此操作吗?
答案 0 :(得分:3)
是的,您可以在绑定UDP套接字(所有套接字,包括第一个套接字)之前指定SO_REUSEADDR(Linux上的SO_REUSEPORT),然后将每个套接字连接到相应的目标,但它是真的没必要。只需根据源地址调度到达单个套接字的每条消息。