【发布时间】:2013-11-20 14:01:31
【问题描述】:
我有一个问题,主机 A 上的 2 个或更多客户端尝试从主机 B 接收具有完全相同的地址和端口号。
假设我们有主机 A 并且有 2 个线程在其上运行。 A.thread_a 向 B 端口 xxxx 发送一个数据包。然后它执行 recvfrom(B, xxxx)。同时,A.thread_b 使用相同的 IP 和端口号执行相同的 recvfrom() 调用。 B,收到A.thread_a的请求后,通过sendto(A, yyyy)发送数据。谁会收到响应,A.thread_a 还是 A.thread_b?
【问题讨论】:
-
未定义行为的网络版本:(
-
@MartinJames 一开始就不应该这样做?
-
确实如此。如果你想多路复用来自多个线程的消息流,你应该在消息中放入某种 originator-ID 并让对端在响应中返回它。
-
@MartinJames 好的,这是有道理的。