C语言 如何防止TCP套接字应答延迟



我正在编写一个数据库库,它必须智能地支持超时。现在我正在研究连接池,我特别担心以下场景:

  1. 发送查询#1
  2. n秒后超时。
  3. 发送查询#2
  4. 接收查询#1的响应

步骤四可以发生,因为查询没有标记查询ID:我只知道我收到了一个响应,我不知道它属于哪个查询。有人可能会说这构成了协议中的一个错误,但这不是我说了算。

在发送查询#2之前,我应该对套接字做些什么来避免这么晚的回复?shutdown(), close()和re- connect()是唯一正确的方法吗?

恐怕这是操作您的连接的唯一安全方法,因为没有其他方法可以在TCP上获得一对一的问题和答案。两者之间似乎缺少某种cancel函数。

这个参考提供了更多的见解:http://www.ssfnet.org/Exchange/tcp/tcpTutorialNotes.html

最新更新