Wad*_*ade 2 sockets linux networking
对于某些特定的网络测试,我创建了一个VLAN设备eth1.900,以及一些别名eth1.900:1和eth1.900.2.
eth1.900 Link encap:Ethernet HWaddr 00:18:E7:17:2F:13
inet addr:1.0.1.120 Bcast:1.0.1.255 Mask:255.255.255.0
eth1.900:1 Link encap:Ethernet HWaddr 00:18:E7:17:2F:13
inet addr:1.0.1.200 Bcast:1.0.1.255 Mask:255.255.255.0
eth1.900:2 Link encap:Ethernet HWaddr 00:18:E7:17:2F:13
inet addr:1.0.1.201 Bcast:1.0.1.255 Mask:255.255.255.0
连接到服务器时,有没有办法指定将使用哪些别名?我可以使用-I <ip>地址选项来选择使用哪个别名,但我不知道如何在不使用原始套接字的情况下使用代码中的TCP套接字来执行此操作,因为我还希望在没有额外套接字的情况下运行特权,即如果可能的话,不以root身份运行.
不幸的是,即使使用root,SO_BINDTODEVICE也不起作用,因为无法识别别名设备名称:
printf("Bind to %s\n", devname);
if (setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, (char*)devname, sizeof(devname)) != 0)
{
perror("SO_BINDTODEVICE");
return 1;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Bind to eth1.900:1
SO_BINDTODEVICE: No such device
| 归档时间: |
|
| 查看次数: |
7000 次 |
| 最近记录: |