gpt4 book ai didi

sockets - 使用一个套接字进行对等通信

转载 作者:行者123 更新时间:2023-12-01 23:18:10 25 4
gpt4 key购买 nike

我想编写一个点对点网络应用程序,遇到以下问题。

网络中的两个节点 A 和 B 正在尝试同时建立彼此的连接。当它们都接受对方的连接时,就会打开两个 TCP 套接字。

两者之间的通信应该只使用一个socket,因为双向通信就足够了。这个问题的优雅解决方案是什么?

谢谢!

最佳答案

您不应该尝试同时建立两个同时连接。这是您的 p2p 设计中的一个缺陷。两个对等点需要相互协调(例如通过中央服务器交换消息,他们都连接到并知道他们是谁)。首先需要决定谁在倾听,谁在连接。一个对等方只打开一个监听套接字,该信息将发送到另一个对等方,以便它知道在哪里连接。如果该连接失败(即,监听对等方位于 NAT/防火墙后面),则需要通知对等方并做出交换角色的决定。先前连接的对等方现在打开一个监听套接字,该信息将发送到先前监听的对等方,以便它知道在哪里连接。如果该连接失败(即,正在监听的对等方也在 NAT/防火墙之后),则两个对等方之间的直接连接在没有额外帮助的情况下是不可能的(例如,NAT 打洞)。在某些情况下,直接连接根本不可能,因此它们之间交换的数据必须通过中央服务器进行代理。

关于sockets - 使用一个套接字进行对等通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14611169/

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