Linux中的应用程序有没有办法访问2个网卡?

时间:2010-05-26 18:57:29

标签: networking linux-kernel nic

我的应用需要访问两张网卡。一个用于接收数据(eth0),另一个用于发送数据(3G调制解调器)。

通常,内核强制应用程序一次只使用一张卡。

我有什么办法可以让它运行吗?

谢谢。

3 个答案:

答案 0 :(得分:3)

内核没有这样做。

内核会根据每个卡分配的路由信息​​和网络将您的流量路由到最合适的终端目的地。但是,如果您使用TCP,则双向通信将仅使用一个路由,因为只有一个地址与该连接相关联。

如果您正在尝试实现多归属发送/接收系统,则普通TCP不支持此功能 - 您需要使用可能在内核中实现的其他协议。

答案 1 :(得分:2)

内核不强制您使用单个接口。如果您没有另外指定,它只选择默认接口。您可以通过在bind()命令中指定其IP地址来指定特定接口。要获取可用接口及其名称的列表,请使用ioctl(SIOCGIFCONF)函数。

以下是一个示例:http://techpulp.com/2008/10/get-list-of-interfaces-using-siocgifconf-ioctl/

答案 2 :(得分:1)

您可以使用bind(2)将两个不同的UDP套接字绑定到单独的NIC,然后发送一个并侦听另一个。