【问题标题】:Creating Peer to Peer connections using intermediate server使用中间服务器创建对等连接
【发布时间】:2012-07-20 09:49:11
【问题描述】:

我想连接两个客户端(通过 TCP/IP 套接字)。客户端可以使用中间服务器相互发现。一旦客户端发现彼此,服务器就不应该有任何参与。

我对此做了一些研究,发现很多人建议JXTA。但是我想自己从头开始创建协议(因为将来我可能还必须使用 WebSockets 来实现相同的协议(当我的客户端是浏览器时))。目前,我的客户端可以是桌面应用程序或移动应用程序。

我的问题是:

  1. 客户端如何在服务器上相互发现?如果服务器将客户端的全局 IP 地址发送给对方,这些信息是否足以创建对等连接?如果客户端在同一个 LAN 网络上而服务器在不同的 WAN 上怎么办?

  2. 客户端具有动态 IP 地址。即使有活动的套接字,他们的 IP 也会突然改变吗?

  3. 点对点连接对于传输非连续数据(如在聊天应用程序中)是否可靠?

[注意:点对点连接是指通过将客户端之一作为临时套接字服务器来建立客户端-服务器 TCP/IP 套接字连接(使用 Java)]

提前致谢。

【问题讨论】:

    标签: networking client-server p2p network-protocols


    【解决方案1】:

    1) 当客户端连接到服务器时,它们必须通知服务器端口号,它们将为来自其他客户端的传入连接保持打开状态。服务器将知道客户端的 IP 地址。然后服务器将需要将这些详细信息传达/发送给另一方/客户端。客户的实际位置没有任何区别。如果两个客户端在同一个网络上,网络路由器会找到它们并缩短它们的通信路径。

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

    3) 是的

    【讨论】:

    • 太棒了....感谢您的回复,您有任何文档链接来支持您的回答吗?
    • 答案的哪一部分需要证明? 1) 很明显,为了使任何连接成功,双方都需要知道对方的 IP 地址和端口号。 2)动态IP地址更改可能发生在两种情况下:正常 - 在客户端不活动期间[通常至少30分钟] DNS服务器(网关)可能会关闭与客户端的连接并将其IP地址发布给其他客户端,错误/失败 -由于问题,连接被丢弃 - 客户端将不得不重新连接。 3) 您可以为套接字设置自己的超时值,底层连接超时将由您的 ISP 设置。
    猜你喜欢
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多