c++ - 如何找到计算机的 IP 地址?

标签 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;

最佳答案

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/

相关文章:

C++ 成员与非成员运算符+

c++ - C++(或任何其他语言)中的优雅控制流

c++ - 最小化 boost::spirit 编译时间

c# - C#:远程主机上的套接字ReceiveAsync和SendAsync出现问题

c# - maskedTextBox C# 中的 IP 地址验证

ios - 使用 Bonjour 获取 iPhone 连接的路由器的 IP 地址

c++ - 带有 "partition by"的准备好的语句对 Sybase IQ 不起作用?

java - 如何测量使用Sockets和并发时的时间

Java套接字端口转发

php - 将子网的特定 IPv6 地址分配给 cURL