插座应该保持打开还是拆除[重复]
Posted
技术标签:
【中文标题】插座应该保持打开还是拆除[重复]【英文标题】:Should sockets be kept open or torn down [duplicate] 【发布时间】:2011-04-13 05:09:15 【问题描述】:可能重复:Should I close a socket (TCPIP) after every transaction?
假设我有某种类型的进程间通信,它使用套接字工作。
我的进程是否应该建立连接并保持打开状态(每个客户端 1 个线程或类似线程)在需要时发送数据;或者是一种更好的方法来简单地建立连接,发送我希望的数据,关闭它并再次进入我的等待状态?
解决这个问题的方法通常是什么?
【问题讨论】:
只是出于好奇,为什么在命名管道上使用套接字? 就我而言,我正在 android 应用程序和 C# 之间搭建一座桥梁,所以我认为管道不合适(或可能)? 进程间是指同一台机器上不同进程之间的通信,所以我问,如果它们在不同的机器上,那么客户端服务器或点对点是正确的词。 【参考方案1】:我问了同样的问题,所有三个回答都说保持开放。我同意了,它似乎对我有用。
Should I close a socket (TCPIP) after every transaction?
【讨论】:
【参考方案2】:本地套接字没有太多开销,因为它们跳过 TCP/IP 堆栈并使用命名管道实现。保持套接字打开和关闭不会有太大的不同。
【讨论】:
只有在您专门打开 Unix 域套接字时,本地套接字才会跳过 TCP/IP 堆栈——如果可用的话。【参考方案3】:任何资源,无论是文件、套接字、数据库连接还是硬件设备,都需要时间并使用处理器和内存来打开,因为它必须获取资源、计算安全访问权限并进行一些记账。
在每条消息之间打开和关闭只会浪费 CPU 和内存资源。
长时间保持打开也很危险,但是您必须保持打开状态并确定最佳超时值以在任何一端死亡时自动关闭它。
【讨论】:
以上是关于插座应该保持打开还是拆除[重复]的主要内容,如果未能解决你的问题,请参考以下文章