如何知道 Windows 8 上的請求何時失敗

如何知道 Windows 8 上的請求何時失敗

我正在 Windows 8 上測試一個小腳本,它嘗試在連接埠 80 上取得一個簡單的網頁。10053

我最初認為是防火牆問題(我正在運行邁克菲),但我不再那麼確定(日誌中沒有任何內容;當我停用防火牆時仍然失敗)。

那我能做些什麼來界定問題呢?例如,如何確定請求是否離開了網卡?

我運行了 Wireshark,它確實向我展示了一個小活動:

(我)同步

(遠程IP)SYN、ACK

(我)確認

(我)RST、ACK

那麼這是否意味著請求確實已發送?

先致謝

答案1

溫索克錯誤10053 =“WSAECONNABORTED”:

SOCKET_ERROR:已建立的連線被主機中的軟體中止。

提到的「軟體」是(最有可能)溫索克本身。

成立這一頁,它有一個很好的簡介,似乎準確地涵蓋了您遇到的情況,因為它可能是您的腳本沒有形成正確的 HTTP 標頭。

HTTP POST 將會傳送到 HTTP 伺服器。
伺服器開始讀取 POST 並注意到 HTTP 請求標頭無效。
它立即發送一個 HTTP 回應(帶有錯誤狀態,可能是 status=400)並關閉連接,而不嘗試繼續讀取即將到來的 HTTP 請求的其餘部分。

同時,客戶端仍然愉快地將 HTTP 請求的其餘部分寫入套接字。 (請記住,TCP/IP 套接字連接需要從兩側關閉。在這種情況下,伺服器已關閉其一側,但客戶端仍在將資料注入半打開的連接中。)

客戶端完成將HTTP POST 寫入到套接字 — 表示資料已緩衝到 Winsock。然後,客戶端應用程式嘗試讀取 HTTP 回應,但無法讀取,因為(WinSock 緩衝的資料)傳出重傳失敗,並且客戶端(Winsock)關閉了套接字連線。即使 HTTP 伺服器發送了回應,它也會遺失並且無法檢索。當嘗試讀取套接字上的 HTTP 回應時,您的應用程式將收到的錯誤是 WSAECONNABORTED。

相關內容