在SO post中遇到一个有趣的观察,其中有两个客户端进程(客户端跨NAT),它们都本地绑定到同一个端口(重用端口),使用UDP套接字在一个进程中发送数据,并在另一个接收。 事实证明,接收过程无法接收数据。
客户端流程(发送)---端口5000 ---> NAT --Port 5333(比如说) - >服务器
这可行
服务器----端口(5333)---> NAT ---端口?? --->客户流程(Recv)
这不起作用
似乎如果将具有相同套接字的单个客户端进程用于发送和接收,它将从服务器接收数据。
为什么会这样?如果客户端发送和接收进程都绑定到同一个端口,那么事情应该有效吗?
为什么不同的进程会导致此行为?看起来由于不同的进程,尽管端口重用,仍然使用不同的端口?