加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 套接字编程的最佳实践是什么 – 我每次都要关闭它还是让

发布时间:2020-12-14 19:37:16 所属栏目:Java 来源:网络整理
导读:我还没有找到一个明确的答案. 我在Java 7中有一个客户端/服务器应用程序.服务器和客户端在单独的计算机上.客户端有一个短(1行10个字符)命令发送到服务器,服务器响应(120个字符串).这将每X秒重复一次 – 其中X是配置文件中的速率.这可能短至1秒到Integer.MAX_
我还没有找到一个明确的答案.

我在Java 7中有一个客户端/服务器应用程序.服务器和客户端在单独的计算机上.客户端有一个短(1行10个字符)命令发送到服务器,服务器响应(120个字符串).这将每X秒重复一次 – 其中X是配置文件中的速率.这可能短至1秒到Integer.MAX_VALUE秒.

每次我创建客户端/服务器应用程序时,理念都是创建连接,执行业务,关闭连接,然后对数据执行任何其他操作.这似乎是应该做的事情 – 特别是在使用资源编程的尝试时.

将插座连接挂在那里X秒会有什么打嗝?关闭并重新启动是否真的是最佳做法,或者套接字保持连接并且每隔X秒发送命令是一种更好的做法?

解决方法

我认为答案取决于您期望拥有的客户数量.

如果你永远不会打开很多客户端连接,那么我会说保持连接打开并调用它,特别是如果延迟是一个问题 – 即使在LAN上,我已经看到连接需要几毫秒来初始化.但是,如果您希望有数百或数千个客户端连接并执行此操作,我会每次重新连接.正如其他人所说,打开非阻塞套接字通常意味着你有一个线程可以运行,这可能会在每个线程的基础上占用几兆字节的堆栈空间.这样做几千次,你会在大多数机器上遇到大问题.

另一个问题是端口空间.仅仅因为TCP / IP堆栈为我们提供了65535个总端口并不意味着所有端口都可用 – 事实上,大多数本地防火墙都会禁止大多数人使用,所以即使你有足够的内存来运行数千个同步线程,你也可以如果您同时打开大量连接,可能会耗尽端口.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读