我想要实现的是将IPv6套接字绑定(bind)到任何地址只是一个特定设备,而不是系统范围的。我的直觉是,我可以使用SO_BINDTODEVICE来setsockopt(),然后绑定(bind)到::。它主要做我期望它做的事。v4中的行为相同。使用SO_BINDTODEVICE绑定(bind)到接口(interface)的套接字将只接受与该接口(interface)上的地址建立的连接。这是意料之中的事。但是,如果我尝试绑定(bind)到接口(interface)B上的源端口,而接口(interface)A上有一个使用相同端口的套接字但,我会遇到错误号“地址已在使用中”.例如:网卡A有
我正在尝试将我的计算机连接到NAT的两端(由OpenWRT运行)并通过NAT建立TCP连接:我在我的第一个NIC(eth0,ip地址129.104.0.1)上运行一个DHCP服务器,并将它连接到路由器的WAN端口(ip地址129.104.0.198)我将我的wifi(wlan0,ip地址192.168.1.119)连接到NAT后面的路由器SSID我正在使用python和SO_BINDTODEVICE选项通过NAT在服务器(在eth0上)和客户端(在wlan0上)之间发送数据包:对于服务器:self.server=socket.socket(socket.AF_INET,socket.S
我的PC有两个网卡。一个(eth0)用于LAN/internet,另一个用于与一个微Controller设备进行UDP通信。微Controller有一个IP(192.168.7.2)和一个MAC地址。第二台pc网络适配器(eth1)有192.168.7.1。微Controller有一个非常简单的IP堆栈,因此mc发送UDP数据包的最简单方法是广播它们。在PC端,我想接收广播-但只能来自eth1。所以我尝试将UDP套接字绑定(bind)到eth1设备。问题(下面的源代码):setsockopt(sock,SOL_SOCKET,SO_BINDTODEVICE,device,sizeof(d
我的PC有两个网卡。一个(eth0)用于LAN/internet,另一个用于与一个微Controller设备进行UDP通信。微Controller有一个IP(192.168.7.2)和一个MAC地址。第二台pc网络适配器(eth1)有192.168.7.1。微Controller有一个非常简单的IP堆栈,因此mc发送UDP数据包的最简单方法是广播它们。在PC端,我想接收广播-但只能来自eth1。所以我尝试将UDP套接字绑定(bind)到eth1设备。问题(下面的源代码):setsockopt(sock,SOL_SOCKET,SO_BINDTODEVICE,device,sizeof(d
我在linux(ubuntu13.10)上运行一个项目,它使用连接到设备的原始套接字。这是我的代码:/*builedsocket*/if((sockfd=socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL)))==-1){perror("listener:socket");return-1;}/*Setinterfacetopromiscuousmode*/strncpy(ifopts.ifr_name,ifName,IFNAMSIZ-1);ioctl(sockfd,SIOCGIFFLAGS,&ifopts);ifopts.ifr_flags|=IFF_