【问题标题】:How to maintain Socket connection?如何维护Socket连接?
【发布时间】:2018-12-10 11:45:23
【问题描述】:

假设我们有聊天应用程序,它允许我们拥有联系人,并且我们可以与联系人中的任何人聊天。我们的应用程序在接收消息时应该表现得像服务器,在发送消息时应该表现得像客户端。 在 Java 中,当我们想要建立一个 TCP 连接客户端时,我们使用套接字作为:

Socket client = new Socket(hostIPAddress, portNumber);

现在,我已经学会了将本地计算机用作服务器来使用套接字,但要使聊天应用程序实用,它应该允许通过两个不同的设备进行通信。

现在,客户端必须拥有我们要与之通信的其他设备的 IP 地址。我是否应该维护聊天应用程序中所有联系人的 IP 地址列表。此外,IP 地址可能是动态的,并且可能会不时更改。如何解决这样的问题?直觉上,IP 地址似乎不起作用。

编辑:

目的是建立对等连接,而不是使用集中式服务器。我想制作一个没有太多复杂性的简单应用程序。

【问题讨论】:

  • 您需要在人们相互连接和交谈的机器中保留一个代理或消息队列(如 MQTT)。
  • 在这种情况下,套接字没有用处。 @SaifAhmad
  • 只有在需要一对一连接时才使用full。一对多很难维护。
  • 我认为您首先需要弄清楚术语。服务器的本质不是使用套接字。你有一个持续运行的程序,它使用一个 ServerSocket 并且客户端一直在与之交谈。这是这里的第一个问题:你想要一个纯粹的对等网络,还是想要一个所有客户端只与集中式服务器通信的架构?!这两件事有很大的不同!
  • 是的,我想要一个点对点网络......这就是我想使用套接字的原因......我知道像 whatsapp 这样的应用程序使用集中式服务器,我不想让事情变得那么复杂.

标签: java sockets tcp chat p2p


【解决方案1】:

您将需要使用一种称为 WebSockets 的技术。它专为您目前的用例而构建。 请参阅https://www.baeldung.com/java-websockets 了解更多信息。

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 2017-01-09
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多