Chinaunix

标题: 求助:多网卡发送数据包 [打印本页]

作者: zwhermes    时间: 2006-08-28 22:59
标题: 求助:多网卡发送数据包
我最近在写一个程序,需要从指定的网卡发送数据包,本人是菜鸟,对此不熟,希望大侠们能给指条明路,多谢了。
作者: Bayweb    时间: 2006-08-29 22:45
原帖由 zwhermes 于 2006-8-28 22:59 发表
我最近在写一个程序,需要从指定的网卡发送数据包,本人是菜鸟,对此不熟,希望大侠们能给指条明路,多谢了。

>>
>>
>>如果不想自己写raw_socket,直接使用LibNet就可以了,很好用的程序库。
>>
>>
作者: zwhermes    时间: 2006-08-30 19:55
我写的程序使用raw_socket。是不是将socket通过函数bind绑定指定网卡的IP就能通过该网卡发送数据?
作者: Bayweb    时间: 2006-08-31 00:38
原帖由 zwhermes 于 2006-8-30 19:55 发表
我写的程序使用raw_socket。是不是将socket通过函数bind绑定指定网卡的IP就能通过该网卡发送数据?

>>
>>
>>指定网卡发送数据的时候不需要指定网卡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, device, 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;
>>    }
>>
>>
作者: zwhermes    时间: 2006-09-05 23:58
不太明白。这不是获取指定的MAC地址吗?我是想让socket使用指定的网卡发包。能不能再说明白一点?
作者: Bayweb    时间: 2006-09-07 12:19
原帖由 zwhermes 于 2006-9-5 23:58 发表
不太明白。这不是获取指定的MAC地址吗?我是想让socket使用指定的网卡发包。能不能再说明白一点?

>>
>>
>>ifr.ifr_name就是网卡的名字,例如"eth0"。这一段的意思就是设置ifr.ifr_name为发包的设备。
>>
>>




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2