要在特定埠上創建新的 INET 套接字,執行以下操作有什么區別:
serversocket.bind((socket.gethostname(), 80))
并將系結名稱留空:
serversocket.bind(('', 80))
uj5u.com熱心網友回復:
僅當您的機器具有多個 IP 地址時才重要。如果您提供特定名稱,您將系結到主機決議到的任何 IP 地址。空字串會將您系結到所有地址。
更新。實際上,我意識到問題比我最初發布的要嚴重。您在每臺機器上都會遇到問題。
許多人沒有意識到這localhost是一個與計算機的IP地址完全不同的介面。 localhost不僅僅是機器IP的別名。
如果服務器系結到localhost,它只會監聽從當前機器到 的連接localhost。如果服務器系結到機器的外部 IP 地址,它只會監聽到該 IP 地址的連接;它不會看到與localhost. 如果服務器系結到 '',相當于 0.0.0.0,它會監聽兩者。
在我的 MacOS 上,socket.gethostname()回傳一個決議為127.0.0.1localhost 的名稱。我不知道這是 MacOS 主義還是在其他作業系統上是真的。
但通常,localhost如果您只偵聽來自您自己的機器(測驗、本地服務器)的連接,或者使用"".
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/421475.html
標籤:
上一篇:如何將訊息從python服務器正確發送到C 客戶端?
下一篇:Java-監聽本地主機和埠
