目前,我执行以下操作来侦听所有接口上的任何可用端口:
// hints struct for the getaddrinfo call
struct addrinfo hints, *res;
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;
// Fill in addrinfo with getaddrinfo
if (getaddrinfo(NULL, "0", &hints, &res) != 0) {
cerr << "Couldn't getaddrinfo." << endl;
exit(-1);
}
我想动态绑定到一个接口,即系统的非环回接口。
我将如何做到这一点?
答案 0 :(得分:4)
看看SO_BINDTODEVICE。 Tuxology有good description这个
答案 1 :(得分:1)
如果你想要一本关于此事的优秀书籍:
W. Richard Stevens的UNIX网络编程分为两卷。第一卷包括插座。UNIX环境中的高级编程,也是由Stevens编写的,并由Rago在第3版中更新。
这些被广泛认为是UNIX / Linux / et al
的经典和标准参考答案 2 :(得分:1)
您可以使用SIOCGIFADDR ioctl()
确定特定接口的IP地址,然后bind()
确定该地址。