复制 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 都无法访问的到。