求助:多网卡发送数据包

发布于 2022-07-24 15:41:54 字数 51 浏览 11 评论 5

我最近在写一个程序,需要从指定的网卡发送数据包,本人是菜鸟,对此不熟,希望大侠们能给指条明路,多谢了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

趴在窗边数星星i 2022-07-26 20:27:40

原帖由 zwhermes 于 2006-9-5 23:58 发表
不太明白。这不是获取指定的MAC地址吗?我是想让socket使用指定的网卡发包。能不能再说明白一点?

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

望她远 2022-07-26 17:46:34

不太明白。这不是获取指定的MAC地址吗?我是想让socket使用指定的网卡发包。能不能再说明白一点?

动听の歌 2022-07-25 17:35:05

原帖由 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] = '';
>>    if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0 )
>>    {
>>        snprintf(err_buf, ERRBUF_SIZE,
>>                "SIOCGIFHWADDR: %s", strerror(errno));
>>        return -1;
>>    }
>>
>>

神经大条 2022-07-25 14:18:34

我写的程序使用raw_socket。是不是将socket通过函数bind绑定指定网卡的IP就能通过该网卡发送数据?

一刻暧昧 2022-07-25 10:10:52

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

>>
>>
>>如果不想自己写raw_socket,直接使用LibNet就可以了,很好用的程序库。
>>
>>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文