我想连接两个客户端(通过TCP / IP套接字)。客户端可以使用中间服务器发现彼此。一旦客户发现对方,就不应该有服务器的任何参与。
我对此进行了一些研究,发现许多人建议JXTA
。但是我想从头开始自己创建协议(因为将来我可能必须使用WebSockets实现相同的功能(当我的客户端是浏览器时))。目前,我的客户可以是桌面应用程序或移动应用程序。
我的问题是:
客户如何在服务器上发现对方?如果服务器相互发送客户端的全局IP地址,那么该信息是否足以创建对等连接?如果客户端位于同一LAN网络且服务器位于不同的WAN上,该怎么办?
客户端拥有动态IP地址。即使它有一个活动套接字,它们的IP也能突然改变吗?
点对点连接是否可靠传输非连续数据(如聊天应用程序)?
[注意:通过点对点连接,我的意思是建立客户端 - 服务器TCP / IP套接字连接(使用Java),使客户端之一成为临时套接字服务器]
提前致谢。
答案 0 :(得分:5)
1)当客户端连接到服务器时,他们必须通知服务器他们将保持打开的端口号以用于来自其他客户端的传入连接。服务器将知道客户端的IP地址。然后,服务器将需要将这些详细信息传送/发送给另一方/客户端。客户的实际位置没有任何区别。如果两个客户端位于同一网络上,则网络路由器将找到它们并使其通信路径更短。
2)动态IP地址在活动连接期间不能更改 - 如果连接将被删除,并且两个客户端都必须通过服务器重新启动连接1)
3)是的