在没有服务器的情况下为对等通信更改 2 个客户端套接字?

Posted

技术标签:

【中文标题】在没有服务器的情况下为对等通信更改 2 个客户端套接字?【英文标题】:Changing 2 client sockets for a communication peer to peer without the server? 【发布时间】:2013-09-16 14:00:54 【问题描述】:

这个场景可以不用webrtc吗?

    客户端 A 连接到服务器 客户端 B 连接到服务器 服务器向 B 和 A 发送信息以及彼此的信息 A 和 B 开始使用相同的连接直接交谈(例如,通过使用新的端口/IP 地址转换他们的套接字信息)

注意:客户端 A 和 B 没有任何套接字服务器。他们只是客户

非常感谢。

【问题讨论】:

您需要转换套接字还是关闭一个并创建另一个就足够了? 【参考方案1】:

建立直接的 TCP 连接绝对是可能的,如果至少有一个客户端可以接受传入的 TCP 连接。在这种情况下,服务器只需告诉另一个客户端要连接的 IP 地址和端口,然后两个客户端就可以直接通过新的 TCP 连接进行通信。

另一方面,如果两个客户端都在防火墙或 NAT 之后,事情就会变得更加不确定——在某些情况下,您可以使用TCP hole punching techniques 来启动直接 TCP 连接;在其他情况下,你只是不走运。

在任何情况下(AFAIK)都不能修改现有的 TCP 连接以拥有新的端点; TCP 连接的端点是固定的,要获得新的端点,您必须建立一个新的 TCP 连接。

【讨论】:

以上是关于在没有服务器的情况下为对等通信更改 2 个客户端套接字?的主要内容,如果未能解决你的问题,请参考以下文章

在这种情况下处理 pthread 通信/信号的正确方法?

用于点对点通信的 Java“对等”套接字

有没有办法在没有负载均衡器的情况下为 ECS 服务配置健康检查?

统一3D。试图在没有权限的情况下为对象发送命令

Geode 通信机制

自顶向下---应用层