如何保持Socket连接?

How to maintain Socket connection?

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

Socket client = new Socket(hostIPAddress, portNumber);

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

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

编辑:

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

您将需要使用一种称为 WebSockets 的技术。它专为您当前的用例而构建。 有关详细信息,请参阅 https://www.baeldung.com/java-websockets