[英]How do you get the ip address from a remote machine?
I'm writing c++ code that I need to run on both windows and linux and I'm looking for a function call that will return the ip address of the box the app is running on. 有这样的吗?
如果您可以使用boost,请查看
如何获取 boost::asio::ip::tcp::socket 的 IP 地址?
调用socket(),然后调用getsockname()。
你可以这样做,但这通常是一个坏主意。
“man netdevice”中描述的 ioctl SIOCGIFCONF 解释了这一点。
这是一个坏主意的原因是你可能不会得到你想要的东西。
该机器可能有多个或多个 IP 地址,您不会知道哪些是公开的。 它可能位于 NAT 网关(或多个)后面,在这种情况下,它们都可能不是公共的。
您只是不能特别有用地使用该信息。 无论您想要什么,都可能不是一个好主意。
最好的主意是使用网络服务。 连接到已知服务器,让它发回您用来联系它的 IP。 这将告诉您 PC 在与外界通信时使用的IP 地址(好的,IP 地址)。
可能的例外情况及其无关紧要的原因:
如果您知道您的应用程序运行的机器的名称,只需使用 gethostbyname()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.