java 客户端服务器通信中的套接字创建
Sockets creation in java client server communication
在涉及客户端 GUI 的 java 套接字客户端服务器程序中,请记住以下内容:
客户端/服务器交互不会是连续的,这意味着最终用户可能会打开 GUI 但只会按
按钮/每隔一段时间发起一次请求。
服务器将为每个客户端启动一个新线程
所有 I/O 将通过 ObjectInput/OutputStream
因此,基于以上内容,connection/socket 创建的最佳方法是什么:
- 为每个客户端启动一个套接字连接并使其保持活动状态直到客户端关闭他的 GUI/session 并在同一连接中处理所有 I/O 会更好吗?
- 或者只是在每次客户端请求时启动新的套接字连接并在服务器响应传递后立即关闭它? (这样一个客户端 GUI 会话可能有多个 connections/disconnections 到服务器)
使用一个优于另一个的 pros/cons 是什么?
非常感谢
对于用户 "click" 发起的请求,我会使用第二种模式,您可以单独为每个用户操作打开和关闭连接。这将使您不会永远保持多个打开的连接。永远保持连接可能会导致许多资源耗尽类型的问题。如果您没有真正重要的理由保持开放连接,例如。您需要通过一些实时消息(例如聊天)来响应客户端,但可以在请求后直接响应,那么不保持连接会简单得多。如果不需要,最好不要保持打开的空闲连接。
在涉及客户端 GUI 的 java 套接字客户端服务器程序中,请记住以下内容:
客户端/服务器交互不会是连续的,这意味着最终用户可能会打开 GUI 但只会按 按钮/每隔一段时间发起一次请求。
服务器将为每个客户端启动一个新线程
所有 I/O 将通过 ObjectInput/OutputStream
因此,基于以上内容,connection/socket 创建的最佳方法是什么:
- 为每个客户端启动一个套接字连接并使其保持活动状态直到客户端关闭他的 GUI/session 并在同一连接中处理所有 I/O 会更好吗?
- 或者只是在每次客户端请求时启动新的套接字连接并在服务器响应传递后立即关闭它? (这样一个客户端 GUI 会话可能有多个 connections/disconnections 到服务器)
使用一个优于另一个的 pros/cons 是什么?
非常感谢
对于用户 "click" 发起的请求,我会使用第二种模式,您可以单独为每个用户操作打开和关闭连接。这将使您不会永远保持多个打开的连接。永远保持连接可能会导致许多资源耗尽类型的问题。如果您没有真正重要的理由保持开放连接,例如。您需要通过一些实时消息(例如聊天)来响应客户端,但可以在请求后直接响应,那么不保持连接会简单得多。如果不需要,最好不要保持打开的空闲连接。