是为频繁请求保持一个套接字打开,还是每次都关闭套接字更好
Posted
技术标签:
【中文标题】是为频繁请求保持一个套接字打开,还是每次都关闭套接字更好【英文标题】:Is it better to keep a socket open for frequent requests, or to close the socket each time 【发布时间】:2013-12-15 20:45:18 【问题描述】:我正在编写一个程序,它将每秒向服务器发出 1 个 GET 请求。我正在使用一个套接字(QTcpSocket),我想知道我是否应该在我的请求中包含“连接:关闭”,然后为每个请求重新创建套接字,或者是否最好让套接字保持活动状态,因为我在重复每秒一次相同的请求。
【问题讨论】:
我会说保持打开状态。但找出答案的最佳方法是对其进行基准测试,看看它对您的应用程序有什么影响。 通过高延迟链接(例如卫星),您会发现连续连接/断开连接无法达到 1 个请求/秒。 【参考方案1】:建立 TCP 连接需要不止一次往返。如果您的连接恰好是 SSL 连接,则还有多个往返。如果您计划与同一个目的地多次通信,那么建立连接并在它仍然启动时使用可能是值得的。您可能应该使您的代码发送请求独立于当前正在启动的连接,并在需要时让它[重新]建立连接。
【讨论】:
【参考方案2】:打开一个套接字需要 3 次数据包交换,关闭它需要 4 次。您应该致力于保持连接打开,而不是在每次事务中都产生这种开销。
【讨论】:
以上是关于是为频繁请求保持一个套接字打开,还是每次都关闭套接字更好的主要内容,如果未能解决你的问题,请参考以下文章
保持套接字服务器在 CentOS 上运行以在 php 中侦听客户端请求