2015-05-19 3 views
0

Я тестирую winHTTP, и я заметил, что независимо от значений тайм-аута, установленных через WinHttpSetTimeouts, если использование IP-адреса с WinHttpConnect и IP-адресом недостижимо (т. Е. Ping возвращает «Destination Host Unreachingable »), время ожидания соединения всегда равно 21 секунде, даже если я установил значения таймаута намного выше.WinHttpOpenRequest & Unreachable Destination

Рассматриваемая величина соответствует значению dwConnectTimeout (третье значение передается WinHttpSetTimeouts), так как при уменьшении этого значения тайм-аут происходит раньше, но имеет потолок в 21 секунду.

Неужели кто-нибудь испытал это раньше? Кто-нибудь знает, почему это происходит и как я препятствую этому?

ответ

2

После исследования кажется, что существует таймаут TCP, который не может управляться функцией WinhttpSetTimeOuts. Предлагаемое решение вычитает прошедшее время из требуемого значения Timeout, а затем повторяет запрос, если осталось еще время.

Конечно, если вы нашли лучшее решение с тех пор, я буду рад это услышать.