我的电脑有两个千兆以太网连接(NIC) - 一个在主板上,另一个在插件卡上。我之前从未使用过多个网卡,而且我还不清楚操作系统如何解决使用哪个网卡,以及它在什么阶段发生。机会是"你不必知道"因为它会自动发生......但是我仍然想知道 - 例如,当您在发送或接收过程中调用bind()
函数时,是否会发生这种情况?在发送和接收之前它是否完全相同? TCP,UDP或任何其他协议是否相同?它与Windows和UNIX / Linux或Mac系统有什么不同吗?
我有动力去问,因为我有一些Winsock2代码"工作正常"但是当我在单个套接字上颠倒发送和接收的顺序时它停止工作。我发现只有在首先发送至少一个数据包时才收到它。
我99%肯定会在某个地方出现错误,但我想在不太可能的情况下100%确定这是一个"功能"或者一个错误超出我的代码...因为症状与接收功能正常工作的可能性一致,但不知何故等待接收错误的NIC。
答案 0 :(得分:0)
它查询IP路由表以找到最便宜的路由,这决定了出站NIC。当您connect()
时会发生这种情况。在UDP中如果你没有连接,就像你通常没有那样,它发生在send()
。