Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5771724
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: LINUX

2009-01-03 11:59:29

如果机器上有多块网卡,两个网卡处在不同的网段中,这在我们实验室还是很常见的,两个网卡有不同的默认网关。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

阅读(8788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~