在 macOS Catalina 中, 先是 nginx 監(jiān)聽了4000端口, 后寫程序監(jiān)聽4000端口竟然沒有出錯.
接著在 linux 中測試, 同樣的程序同樣的端口, linux 卻報錯
然后找到這個問題
和 SO_REUSEPORT 有關(guān)
參考鏈接
linux 在3.9引入SO_REUSEPORT特性, 支持多個進程或者線程綁定到同一端口,提高服務(wù)器程序的性能
所以。在mac上的表現(xiàn)應(yīng)該是這個問題。
SO_REUSEPORT 選項分發(fā)數(shù)據(jù)包的方法是計算對端IP、端口加上本地IP、端口這四個值的哈希值,通過這個哈希值將數(shù)據(jù)包分發(fā)到不同進程上。
浙公網(wǎng)安備 33010602011771號