簡體   English   中英

socket.timeout; 說明?

[英]socket.timeout; Explanation?

我正在構建端口掃描程序((與問題無關,僅說明背景)),我知道主機的IP,但不知道打開了哪些端口。 因此,掃描。

它處於開發的早期階段,因此錯誤處理很糟糕,但還不足以使Python為什么可以解釋這一點。

它嘗試連接到123.456.7.8, 1 顯然,這是一個荒謬的端口,因此它會引發錯誤。 錯誤是“ No Route to Host之類的,對嗎? 錯誤! 而是Operation Timed Out!

好的,如果我的計算不正確,請增加超時時間。

.. .....所做的只是沖洗並重復!

大約20分鍾后,超時時間為20秒,但仍在超時。 真? 為什么python為什么會引發timed out錯誤,而不是No route to host! 或類似的?

需要超時和連接失敗之間的區別, 因為晚,無處之間的差異。 這阻止了我這樣做,造成了無限循環的急促和等待。

我該怎么辦? 我要去哪里?

Python socket模塊是平台套接字API的薄包裝。 該問題與Python無關。

不一定會出現“ No Route to Host錯誤。 此外,防火牆通常會丟棄接收到的數據包(用於過濾的端口),這很可能表現為代碼中的超時錯誤。 參見丟棄與拒絕 (忽略結論,但閱讀正在發生的情況的解釋)。

要解決此問題,請建立多個並發連接並設置固定的超時時間,或者使用原始套接字並自己發送數據包(您可以使用scapy來調查行為)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM