套接字应该保持打开还是关闭?

10
可能重复:在每个事务后我应该关闭一个套接字(TCPIP)吗? 假设我有一些使用套接字进行进程间通信的方式。我的进程应该建立连接并保持它保持打开状态(每个客户端一个线程或类似)在需要发送数据时发送;还是建立连接、发送我想要的数据、关闭连接并再次进入等待状态更好?通常如何解决这个问题?

纯粹出于好奇,为什么要选择套接字而不是命名管道? - Akash Kava
在我的情况下,我正在构建一个Android应用程序和C#之间的桥梁,因此我认为管道不合适(或不可能)? - Maxim Gershkovich
进程间通信是指在同一台计算机上不同进程之间的通信,因此我问了一下,如果它们在不同的计算机上,则客户端服务器或点对点是正确的术语。 - Akash Kava
3个回答

7

3
本地套接字没有太多开销,因为它们跳过TCP/IP堆栈并使用命名管道实现。保持套接字打开和关闭不会产生太大的差异。

1
本地套接字仅在您特定地打开Unix域套接字时跳过TCP/IP堆栈——仅限可用的情况下。 - gby

2
任何资源,无论是文件、套接字、数据库连接还是硬件设备,都需要时间并且使用处理器和内存来打开,因为它们必须获取资源、计算安全访问并进行一些簿记工作。
在每个消息之间打开和关闭将浪费 CPU 和内存资源。
长时间保持打开也很危险,但您必须保持打开状态,并决定最佳超时值,在任何一端已经失效时自动关闭它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接