如何查找计算机的IP地址?

Nat*_*879 1 c++ sockets ip-address

我正在用C++编写一个使用网络套接字的程序.我需要知道计算机的IP地址是什么,所以我可以将它显示给用户.该程序必须在Windows和Linux上运行.

我听说过计算机可以有多个IP地址.我希望不同计算机上的其他程序可以用来连接到计算机.

这是我已经拥有的相关代码(变量在其他地方声明):

master = new fd_set;
FD_ZERO(master);
struct sockaddr_in my_addr;

listener = socket(PF_INET, SOCK_STREAM, 0);

my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(port);
my_addr.sin_addr.s_addr = INADDR_ANY;
memset(my_addr.sin_zero, '\0', sizeof my_addr.sin_zero);

bind(listener, (struct sockaddr *)&my_addr, sizeof my_addr);

listen(listener, 10);

FD_SET(listener, master);

fdmax = listener;
Run Code Online (Sandbox Code Playgroud)

Spe*_*ort 5

我听说过计算机可以有多个IP地址.我希望不同计算机上的其他程序可以用来连接到计算机.

嗯......那可能是其中任何一个.如果计算机有多个IP地址,则可以在其中任何一个上访问它.当然,其中一个可能受到不同防火墙规则的约束,或者它们可能位于两个完全不同的段上,但是无法检测到任何和所有这些情况.


And*_*ndy 5

我发布了一个类似的问题,但最近在OS X上.我收到的答案是使用0.0.0.0或INADDR_ANY.这将使您的套接字监听所有可用的地址,因此您不需要确定哪一个是"正确"的.