如果我们要再次通信,关闭套接字是一个好习惯吗?
Is it a good practice close a socket if we are going to communicate again?
我正在 java 中编写一个 Client/server 应用程序。我想出了一个想法,如果服务器必须再次与客户端通信,则最好不要关闭套接字,反之亦然。这是一个好习惯吗?在我的其他应用程序中,我总是与连接到请求信息的服务器的客户端一起工作,现在我需要一些东西,如果服务器中的某个变量发生更改,服务器必须将该信息发送给某个特定的客户端。我不知道如何更好地解释这一点。总结一下,如何在没有客户端请求的情况下从服务器向客户端发送信息?
尝试从服务器连接到客户端时存在多个主要问题
- 非静态IP
- 防火墙和 WiFi 路由器配置
- 客户必须列出
每一个都有很多要说的,但只要说如果服务器保持与客户端的连接就容易得多,而不是稍后尝试重新建立联系就足够了
您始终必须确保资源在不再需要时立即关闭。
如果您需要等待来自服务器的请求,您显然必须保持套接字打开,直到您真正想要关闭连接。
实际上,这就是当应用程序协议允许通过同一连接发送多个请求时服务器的工作方式。将接受服务器发起的请求视为客户端中的一项 "server" 功能,但实际上您并未接受连接。
当然,我知道你有一个自定义的应用程序级协议。如果您使用其他应用程序级协议(例如 HTTP),情况可能会有所不同。如果是这种情况,请指定协议,以便我们更好地帮助您。
我正在 java 中编写一个 Client/server 应用程序。我想出了一个想法,如果服务器必须再次与客户端通信,则最好不要关闭套接字,反之亦然。这是一个好习惯吗?在我的其他应用程序中,我总是与连接到请求信息的服务器的客户端一起工作,现在我需要一些东西,如果服务器中的某个变量发生更改,服务器必须将该信息发送给某个特定的客户端。我不知道如何更好地解释这一点。总结一下,如何在没有客户端请求的情况下从服务器向客户端发送信息?
尝试从服务器连接到客户端时存在多个主要问题
- 非静态IP
- 防火墙和 WiFi 路由器配置
- 客户必须列出
每一个都有很多要说的,但只要说如果服务器保持与客户端的连接就容易得多,而不是稍后尝试重新建立联系就足够了
您始终必须确保资源在不再需要时立即关闭。
如果您需要等待来自服务器的请求,您显然必须保持套接字打开,直到您真正想要关闭连接。
实际上,这就是当应用程序协议允许通过同一连接发送多个请求时服务器的工作方式。将接受服务器发起的请求视为客户端中的一项 "server" 功能,但实际上您并未接受连接。
当然,我知道你有一个自定义的应用程序级协议。如果您使用其他应用程序级协议(例如 HTTP),情况可能会有所不同。如果是这种情况,请指定协议,以便我们更好地帮助您。