我正在实施一个对等网络应用程序,该应用程序包括向所有对等方发送初始握手,然后在侦听特定端口时异步通信。因此,我首先需要使用我的应用程序之后将要监听的相同端口将握手发送到不同的对等端。我是否可以将两个不同的套接字绑定到同一个本地端口,但是它给了我一个绑定异常。我不确定如何做到这一点。
答案 0 :(得分:0)
套接字必须具有唯一的<source address, source port, protocol (tcp/udp), destination address, destination port>
元组。
所以,是的,只要远程地址不同,就可以通过将SO_REUSEADDR
套接字选项设置为true来重新使用本地端口。
但这不是必要的。 bittorrent协议不要求将传出连接的本地端口设置为任何特定端口。您根本不必绑定传出连接。您可以简单地让TCP堆栈找出正确的接口和端口。
只有您的侦听套接字需要绑定到您宣布的端口。也不需要特定的地址,您可以使用unspecified address,::0
(对于v4 / v6双堆栈套接字)或0.0.0.0
(仅限v4)。
所以,我必须从一个端口进行握手,这个端口与我向跟踪器宣布的端口相同
规范并未在任何地方说明。