linux下,如果想让socket只通过一个接口收发报文,那么可以创建socket后,通过setsockopt函数来绑定
选项为SO_BINDTODEVICE
struct ifreq opt;
strncpy(opt.ifr_name, "eth0", IFNAMSIZ);
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE,
(char *)&opt, sizeof(opt)) < 0) {
/*error handling*/
}
以后该socket都只通过eth0接口收发报文