我应该在每次成功的消息处理后关闭套接字吗?

Duc*_*e88 5 java sockets

我正在编写一个具有 Java 服务器/客户端套接字的程序。将会有很多消息来回发送,并且在某些情况下,向服务器发送消息并等待一段时间,直到服务器发回“执行”消息。

这是我的计划:

  • 1台服务器(机器上可能有防病毒安全措施)
  • 3个客户(未来有空间容纳更多客户)
  • 基于客户端向服务器的输出,在服务器端执行并行和交错同步。
  • 当所有机器准备好(同步)时,当并行时,所有客户端都将收到一条“执行”消息,当交错时,客户端将按 1 接 1 的顺序发送一条“执行”命令

我已经开始构建程序来进行上述设置,一旦服务器收到消息,服务器就会根据输入执行操作,然后将消息发送回客户端。我过去遇到过消息无法正确发送或接收的问题,所以我的问题是:

  • 我是否保持套接字处于活动状态直到程序结束?
  • 或者我是否仅保持套接字打开,直到发生成功传输(完整握手),然后关闭套接字?让客户端下次想要发送消息时再次连接。

pau*_*sm4 0

问:我应该为每个连接打开一个新套接字,还是保留它并在后续连接中重新使用它?

答:“这取决于”。

我鼓励您“保持简单”并根据需要打开新的套接字......直到您发现您需要其他方式。

无论如何:只要您合理地期望客户端和服务器之间进行“对话”,就保持套接字打开。如果客户可能想尽快再次通话,请不要强迫他建立新的连接。

最后,看一下有关“连接池”的这些链接: