通过服务器将两个客户端连接在一起,无需端口转发
connect two clients together by a server without port forwarding
我正在尝试编写一个执行以下操作的应用程序:
- 客户端 (1) 连接到服务器并从列表中选择另一个客户端 (2)
- 服务器将客户端 (1) 和 (2) 连接在一起(不涉及端口转发)
如何使用知道其地址、端口并打开连接的服务器将两个客户端直接相互连接?
在许多关于 p2p 的帖子中都有陈述,这是可能的并且是一种常见的情况,但我正在努力寻找它是如何完成的解释。
您所描述的是直接对等 (p2p) 连接。为了在正常情况下工作,不需要端口转发,或者更高级的NAT traversal techniques(打孔,STUN等),服务器必须促进协商在客户端之间,一个客户端同意打开一个监听套接字,另一个客户端将尝试连接到该套接字。如果该连接失败,客户端可以调换角色并在另一个方向上重试。只要至少有 1 个客户端不在 NAT 后面,这通常会起作用。但如果该连接也失败,客户端之间的进一步通信将不得不通过作为代理的服务器,除非使用更高级的技术。
我正在尝试编写一个执行以下操作的应用程序:
- 客户端 (1) 连接到服务器并从列表中选择另一个客户端 (2)
- 服务器将客户端 (1) 和 (2) 连接在一起(不涉及端口转发)
如何使用知道其地址、端口并打开连接的服务器将两个客户端直接相互连接?
在许多关于 p2p 的帖子中都有陈述,这是可能的并且是一种常见的情况,但我正在努力寻找它是如何完成的解释。
您所描述的是直接对等 (p2p) 连接。为了在正常情况下工作,不需要端口转发,或者更高级的NAT traversal techniques(打孔,STUN等),服务器必须促进协商在客户端之间,一个客户端同意打开一个监听套接字,另一个客户端将尝试连接到该套接字。如果该连接失败,客户端可以调换角色并在另一个方向上重试。只要至少有 1 个客户端不在 NAT 后面,这通常会起作用。但如果该连接也失败,客户端之间的进一步通信将不得不通过作为代理的服务器,除非使用更高级的技术。