如何防止对TCP套接字的延迟回复?

时间:2011-10-22 16:16:57

标签: c sockets connection-pooling

我正在编写一个必须智能支持超时的数据库库。现在我正在考虑连接池,我特别担心以下情况:

  1. 发送查询#1
  2. n 秒后超时。
  3. 发送查询#2
  4. 收到对查询#1
  5. 的回复

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

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

1 个答案:

答案 0 :(得分:3)

我担心这是操作连接的唯一安全方式,因为没有其他方法可以通过TCP获得问答之间的一对一。中间似乎缺少某种取消功能。

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