
您不需要
bind(2)这个。
您要在此处执行的 *** 作是使用与套接字不同的 网络接口
。要使用系统默认设置以外的网络接口,您需要将
SO_BINDTODEVICEsocket选项与一起使用
setsockopt。
"eth1"例如,您要使用的接口应在要传递给
ifr_name的
ifreqstruct字段中指定为字符串
setsockopt。为此,您需要包括
<net/if.h>标题。
基本上,类似以下(未经测试)的代码:
int set_interface(int socket_fd, const char* interface_name){ ifreq interface; memset(&interface, 0, sizeof(interface)); strncpy(interface.ifr_name, interface_name, IFNAMSIZ); int res = setsockopt(socket_fd, SOL_SOCKET, SO_BINDTODEVICE, &ifreq, sizeof(ifreq)); return res;}另外,请确保检查返回码,以防
setsockopt失败。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)