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

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: C/C++

2007-07-08 21:47:23

方法一:
使用libnet,这里就不介绍了

方法二:
使用原始套接字
>>
>>指定网卡发送数据的时候不需要指定网卡IP,只要设置struct ifreg ifr.ifr_name就可以了。
>>例如:
>>    struct ifreq ifr;
>>    fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
>>    memset(&ifr, 0, sizeof (ifr));
>>    strncpy(ifr.ifr_name, "eth0", sizeof (ifr.ifr_name) -1);
>>    ifr.ifr_name[sizeof(ifr.ifr_name) - 1] = '\0';
>>    if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0 )
>>    {
>>        snprintf(err_buf, ERRBUF_SIZE,
>>                "SIOCGIFHWADDR: %s", strerror(errno));
>>        return -1;
>>    }
>>

方法三:bind的时候设置不同网卡的ip
这种情况适用于运行Server端操作,为套接字绑定不同的接口ip,可以接受不同网络[不同ISP]的数据包

在双线接入主机中,可以使用这种方法来编写程序,来相应不同接口的数据包,而且反应快。

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