【发布时间】:2012-04-19 09:23:29
【问题描述】:
既然可以构造一个tcp socket和一个udp socket监听同一个端口,那么是否可以构造多个socket监听同一个端口上的udp消息,每个socket监听不同的源端点?
在设计方面,我目前的印象是,“正确”的做法是让一个套接字侦听所有 udp 消息并让它在应用程序级别确定来源。
【问题讨论】:
既然可以构造一个tcp socket和一个udp socket监听同一个端口,那么是否可以构造多个socket监听同一个端口上的udp消息,每个socket监听不同的源端点?
在设计方面,我目前的印象是,“正确”的做法是让一个套接字侦听所有 udp 消息并让它在应用程序级别确定来源。
【问题讨论】:
通过使用SO_REUSEADDR 套接字选项,可以让多个 UDP 套接字在同一个本地 IP/端口对上侦听,但无法告诉每个套接字只接受其预期远程 IP/端口对的数据包,因此无法保证哪个套接字会接收哪个数据包。所以是的,正确的选择是使用单个套接字来查看每个接收到的数据包的发送 IP/端口并相应地引导数据包。
【讨论】: