使用中间服务器创建点对点连接

4
我想通过TCP/IP套接字连接两个客户端。客户端可以使用中间服务器相互发现。一旦客户端相互发现,就不应该涉及到服务器。我对此进行了一些研究,并发现许多人建议使用JXTA。但我想从零开始创建协议(因为将来我可能还需要使用WebSockets实现相同的功能(当我的客户端是浏览器时))。目前,我的客户端可以是桌面应用程序或移动应用程序。
我的问题是:
1. 客户端如何在服务器上相互发现?如果服务器将客户端的全局IP地址发送给彼此,那么这些信息是否足以创建点对点连接?如果客户端在同一LAN网络上,而服务器在不同的WAN上,情况又如何?
2. 客户端具有动态IP地址。即使具有活动套接字,它们的IP地址也可能突然更改吗?
3. 点对点连接是否可靠传输非连续数据(例如聊天应用程序)?
[注意:通过将客户端作为临时套接字服务器之一,我指的是建立客户端-服务器TCP/IP套接字连接(使用Java)]
谢谢。
1个回答

5

1) 当客户端连接到服务器时,他们必须通知服务器他们将保持开放以接收其他客户端传入连接的端口号。服务器将知道客户端的IP地址。然后服务器需要将这些详细信息通信/发送给另一方/客户端。客户端的实际位置并不重要。如果两个客户端在同一个网络上,网络路由器将找到它们并使它们的通信路径更短。

2) 动态IP地址在活动连接期间无法更改 - 如果更改,则连接将中断,两个客户端都必须通过1)中的服务器重新启动连接。

3) 是


非常好,谢谢您的回复。您有支持您答案的文档链接吗? - PC.
1
答案的哪一部分需要证明? 1)显而易见,为了使任何连接成功,双方都需要知道彼此的IP地址和端口号。 2)动态IP地址更改可能发生在两种情况下:正常情况下,在客户端不活动期间[通常至少30分钟],DNS服务器(网关)可能会关闭与客户端的连接并将其IP地址分配给其他客户端;错误/故障-由于问题而断开连接-客户端将不得不重新连接。 3)您可以为套接字设置自己的超时值,底层连接超时将由您的ISP设置。 - Germann Arlington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接