gpt4 book ai didi

Java P2P 网络,对不同的入站和出站连接使用相同的端口

转载 作者:太空宇宙 更新时间:2023-11-04 13:36:32 25 4
gpt4 key购买 nike

我正在实现一个对等网络应用程序,其中涉及向所有对等方发送初始握手,然后在监听特定端口时进行异步通信。因此,我首先需要使用我的应用程序随后监听的同一端口将握手发送到不同的对等点。我对是否可以将两个不同的套接字绑定(bind)到同一个本地端口有一些困惑,但它给了我一个绑定(bind)异常。我不确定如何做到这一点。

最佳答案

套接字必须具有唯一的 <source address, source port, protocol (tcp/udp), destination address, destination port>元组。

所以是的,可以通过设置SO_REUSEADDR来重新使用本地端口。只要远程地址不同,套接字选项就设置为 true。

但这不是必要的。 BitTorrent 协议(protocol)不要求将传出连接的本地端口设置为任何特定端口。您根本不必绑定(bind)传出连接。您只需让 TCP 堆栈找出正确的接口(interface)和端口即可。

只有您的监听套接字需要绑定(bind)到您宣布的端口。也不需要特定的地址,您可以使用 unspecified address , ::0 (适用于 v4/v6 双堆栈套接字)或 0.0.0.0 (仅限 v4)。

so, I have to do a handshake from a port same as the one i have announced to the tracker

规范没有在任何地方这么说。

关于Java P2P 网络,对不同的入站和出站连接使用相同的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31634545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com