復制 A 進程:./test-server 10.0.0.2 6000 B 進程:./test-server 0.0.0.0 6000 C 進程:./test-server 127.0.0.1 6000 那么你的客戶端如果指定是連接 10.0.0.2:6000,那么 A 進程會優先執行。因為當匹配到 A 進程的 socket 的時候,需要看一下握手包中的目的 ip 和這個地址是否匹配,確實匹配那得分就是 4 分,最高分。
如果你指定連接的是 10.0.0.3,那么 A 進程就無法被匹配到。這個時候 B 進程監聽時指定的是 0.0.0.0(rcv_saddr 為 false),則不需要進行目的地址的比對,得分為 2。由于沒有更高分,所以這次命中的是 B 進程。
C 進程只有你在本機訪問,且指定 ip 使用 127.0.0.1 才能命中,得分也是為 4 分。外部服務器或者是在本機使用其它 ip 都無法訪問的到。