3

目前,我执行以下操作来侦听所有接口上的任何可用端口:

// 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);
}

我只想动态绑定到一个接口,即系统的非环回接口。

我该怎么做呢?

4

3 回答 3

4

看看 SO_BINDTODEVICE。Tuxology对此有很好的描述

于 2009-07-13T13:25:54.097 回答
1

如果你想要一本关于这个问题的优秀书籍:

W. Richard Stevens 的《UNIX 网络编程》,分两卷。第一卷涵盖了插座。

也是 UNIX 环境中的高级编程,同样由 Stevens 编写,由 Rago 在第 3 版中更新。

这些被广泛认为是 UNIX / Linux / 等的经典和标准参考

于 2009-07-13T15:15:44.513 回答
1

您可以使用 SIOCGIFADDRioctl()确定特定接口的 IP 地址,然后bind()确定该地址。

于 2009-07-13T15:21:15.937 回答