Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何维护套接字连接?_Java_Sockets_Tcp_Chat_P2p - Fatal编程技术网

Java 如何维护套接字连接?

Java 如何维护套接字连接?,java,sockets,tcp,chat,p2p,Java,Sockets,Tcp,Chat,P2p,假设我们有一个聊天应用程序,它允许我们拥有联系人,我们可以通过联系人与任何人聊天。我们的应用程序在接收消息时应该像服务器,在发送消息时像客户端。 在Java中,当我们想要建立TCP连接客户端时,我们使用套接字作为: Socket client = new Socket(hostIPAddress, portNumber); 现在,我已经学会了使用我的本地机器作为服务器使用套接字,但是为了使聊天应用程序实用,它应该允许与两个不同的设备进行通信 现在,客户端必须具有我们要与之通信的其他设备的IP地

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

Socket client = new Socket(hostIPAddress, portNumber);
现在,我已经学会了使用我的本地机器作为服务器使用套接字,但是为了使聊天应用程序实用,它应该允许与两个不同的设备进行通信

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

编辑:


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

您需要使用一种称为WebSocket的技术。它正是为您目前拥有的用例而构建的。
有关更多信息,请参阅。

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