junze 发表于 2009-7-14 21:19

linux 多网络接口 编程

假如现在系统中有多个网络接口,比如,eth0,ppp0,wlan0,eth1,等,那么用socket编程时,我要connect某个服务器,那linux是通过哪个接口来进行连接的?<br /><br />

AmixIce 发表于 2009-8-3 17:28

本帖最后由 AmixIce 于 2009-8-3 17:32 编辑

内核应该会通过路由表找到要使用的接口.
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
60.168.80.1   *               255.255.255.255 UH    0      0      0 ppp0
192.168.0.0   *               255.255.0.0   U   0      0      0 eth0
default         *               0.0.0.0         U   0      0      0 ppp0

比如你要链接到 192.168.0.23 , 他能判断到
192.168.0.0   *               255.255.0.0   U   0      0      0 eth0
这个接口可以到达, 那么它就用这个接口发出去.

比如你要链接到 122.0.23.1 , 找不到能到达的接口, 会使用default的接口发出去.
如果没有defualt这一项理由表, ping的时候会报错, 说目标地址不能达到.

但是加上有2个网卡都能到达某个地址, 比如eth0 eth1 接在同一个LAN, 而且要到达一个LAN内的地址, 就不知道怎么处理.

以上个人理解.

一朝成名 发表于 2009-7-15 09:07

你能让你的网卡同时运行吗?

能同时运行俩TCP?<br /><br />这是个问题

sinanjj 发表于 2009-8-4 14:22

路由表前面的优先

sinanjj 发表于 2011-10-6 03:27

https://bbs.21ic.com/viewthread.php?tid=102774&highlight=%E8%AF%B7%E6%95%99%E4%B8%80%E4%B8%AA%E5%A4%9A%E7%BD%91%E5%8D%A1%E9%80%9A%E4%BF%A1%E7%9A%84%E9%97%AE%E9%A2%98

realrots 发表于 2011-10-13 20:31

没问题啊,socket可以绑定对应的网口
页: [1]
查看完整版本: linux 多网络接口 编程