我正在用 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;
最佳答案
I have heard somewhere that a computer can have multiple IP addresses. I want the one that other programs on different computers can use to connect to the computer.
嗯……可能是他们中的任何一个。如果一台计算机有多个 IP 地址,则可以通过其中任何一个访问它。当然,其中一个可能受制于不同的防火墙规则,或者它们可能位于两个完全不同的网段,但无法检测到所有这些情况。
关于c++ - 如何找到计算机的 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/485769/