Networking
兩台伺服器可以綁定同一個埠嗎?
我驚訝地發現我正在維護的兩台伺服器都能夠同時在開發中偵聽埠 3000。
隨著第一台伺服器執行,netstat 顯示
▶ sudo netstat -nap tcp | grep 3000 tcp6 0 0 ::1.3000 *.* LISTEN tcp4 0 0 127.0.0.1.3000 *.* LISTEN
並且兩者都在執行:
▶ sudo netstat -nap tcp | grep 3000 tcp4 0 0 *.3000 *.* LISTEN tcp6 0 0 ::1.3000 *.* LISTEN tcp4 0 0 127.0.0.1.3000 *.* LISTEN
我對此的解釋是,第一台伺服器只為本地主機(127.0.0.1)綁定了埠 3000,第二台伺服器為“任何”(0.0.0.0)地址綁定了埠 3000。那正確嗎?
這種行為似乎是第一台伺服器取代了另一台伺服器的流量
http://localhost:3000
,我認為這是有道理的。我只是想確認我對這個稍微令人驚訝的場景的理解,如果已經綁定了具有該埠的任何地址,我會認為嘗試偵聽“任何”地址會失敗。
您的假設對於第一次服務是正確的。它聽著
localhost
和locahost6
。大約第二個,它似乎偵聽主機的 IP,與上面不同。不過有機率秒也試聽一下localhost
。您可以通過停止兩者並僅啟動第二個來檢查它。如果你允許我謙虛的建議:將服務一和服務二的埠分開,例如 3001 和 3002