Linux:多个以太网端口上的TCP套接字编程

我一直在网上搜索我是如何使用C / C ++在linux中利用两个独立的以太网端口(例如eth0和eth1)编程的

我理解如何使用socket()和inet_pton,但这似乎只适用于单个以太网端口。

第一个以太网端口自动映射到192.168.0.100,第二个是192.168.0.101

两部分答案。

  1. 通常,您不必担心显式使用多个以太网端口。 内核自动处理它。 这是它的工作原理。 对于传出数据包,内核根据目标IP地址通过相应的以太网端口发送数据包。 因此,如果可以通过eth0访问网络10.0.0.0,那么该数据包将从中发送出去。 如果可以通过eth1访问网络11.0.0.0,那么就是将数据包发送出去的地方。 内核通过分配给接口的网络掩码,IP地址和默认网关(与路由表一起)确定网络可达性。
  2. 对于传入的数据包,如果绑定到任何地址,则您正在侦听的端口的所有数据包都将传递给您。 您还可以选择绑定到特定的IP地址,在这种情况下,只会将发送到该IP地址和端口的数据包发送给您。