【发布时间】:2014-11-26 20:56:56
【问题描述】:
我的电脑有两个千兆以太网连接 (NIC) - 一个在主板上,一个在插件卡上。我以前从未使用过多个网卡,而且我根本不清楚操作系统如何解析要使用的网卡,以及它发生在什么阶段。机会是“您不必知道”,因为它会自动发生......但我仍然想知道 - 例如,当您调用 bind() 函数时,或者稍后在发送或接收期间会发生这种情况吗?发送和接收之前的过程是否完全相同? TCP,UDP或任何其他协议是否相同? Windows 和 UNIX/Linux 或 Mac 系统有什么不同?
我很想问,因为我有一些“工作正常”的 Winsock2 代码,但是当我在单个套接字上颠倒发送和接收的顺序时它停止工作。我发现它只有在至少先发送一个数据包时才会收到。
我 99% 确定某处会出现错误,但我希望 100% 确定在不太可能的情况下这是一个“功能”或超出我的代码的错误...因为症状与接收功能正常工作的可能性一致,但不知何故等待在错误的 NIC 上接收。
【问题讨论】:
-
"仅在至少先发送一个数据包时才收到" ...如果您在谈论 UDP,这可能是由内部防火墙或任何可能在途中的外部防火墙引起的,或者甚至可能通过网络交换机,如果出于某种原因它认为 MAC 地址属于不同的端口。
标签: sockets network-programming winsock