SO_BINDTODEVICE可以显示地将某些数据指定从哪个网络设备发送。
此选项的值是一个表示设备名称的字符串,当为空字符串时,套接字绑定到序号为0的网络设备上。当字符串是一个正确的网络设备名称时,则会绑定到此设备上。
如下面代码将套接字s绑定到网卡eth1上:
int s, err;
char ifname[] = "eth1"; //绑定的网卡名称
...
...
err = setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, ifname, 5); //将s绑定到网卡eth1上
if(err){
printf("setsockopt SO_BINDTODEVICE failure\n");
}
说明
(1)套接字
套接字是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。
(2)setsockopt()函数
#include <sys/types.h>
#include <sys/socket.h>
int setsockopt(int s, int level, int optname,