如果我们要再次沟通,关闭套接字是一个好习惯吗?

时间:2016-12-19 19:40:20

标签: java sockets server client client-server

我正在使用java编写客户端/服务器应用程序。我提出了一个想法,如果服务器必须再次与客户端通信,或者反之亦然,最好不要关闭套接字。这是一个好习惯吗?在我的其他应用程序中,我总是使用连接到服务器的客户端请求信息,现在我需要一些东西,如果在服务器中更改某个变量,服务器将必须将该信息发送到某个特定客户端。我不知道如何更好地解释这一点。总结一下,如何在没有客户请求的情况下从服务器向客户端发送信息?

2 个答案:

答案 0 :(得分:1)

您必须确保资源在不再需要时立即关闭。

如果您需要等待来自服务器的请求,您显然必须保持套接字打开,直到您确实要关闭连接。

实际上,当应用程序协议允许通过同一连接发送多个请求时,这就是服务器的工作方式。考虑接受服务器发起的请求,好像它是一个"服务器"客户端的功能,但事实上你不接受连接。

当然,我知道你有一个自定义的应用程序级协议。如果您使用其他应用程序级协议(例如HTTP),则可能会有所不同。如果是这种情况,请指定协议,以便我们更好地为您提供帮助。

答案 1 :(得分:0)

尝试从服务器连接到客户端有多个主要问题

  1. 非静态IP
  2. 防火墙& WiFi路由器配置
  3. 客户必须列出
  4. 对于其中的每一个都有更多的说法,但只要说服务器维护与客户端的连接,而不是稍后尝试重新建立联系就足够了