Как предотвратить поздние ответы на сокет TCP?

Я пишу библиотеку базы данных, которая должна будет разумно поддерживать тайм-ауты . Теперь, когда я смотрю на пул соединений, меня особенно беспокоит следующий сценарий:

  1. Отправить запрос №1
  2. Тайм-аут через n секунд.
  3. Отправить запрос №2
  4. Получить ответ на запрос №1

Шаг четвертый может произойти, потому что запросы не помечены идентификатором запроса: все, что я знаю, это то, что я получил ответ, и я не Не знаю, к какому запросу он принадлежит. Кто-то может возразить, что это ошибка протокола, но это не мое дело.

Что мне делать с сокетом перед отправкой запроса №2, чтобы избежать такого позднего ответа? Единственно правильный способ shutdown () , close () и повторно connect () ?

5
задан Andres Jaan Tack 22 October 2011 в 16:16
поделиться