如果机器上有多块网卡,两个网卡处在不同的网段中,这在我们实验室还是很常见的,两个网卡有不同的默认网关。socket需要绑定相应的网卡,将数据包发送到指定的网卡上。
上一段测试代码:
#include #include struct ifreq interface; struct socket sock; /* Management net interface name */ #define IFNAME "eth1" /* Acquire socket here ... */ strncpy(interface.ifr_ifrn.ifrn_name, IFNAME, \ IFNAMSIZ); if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, \ (char *)&interface, sizeof(interface)) < 0) { perror("SO_BINDTODEVICE failed"); /* Deal with error... */ } |
参考:
http://blog.chinaunix.net/u/270/showart_234383.html
阅读(8773) | 评论(0) | 转发(0) |