从计算机名称中查找计算机 IP 地址
Find machine IP adress from machine name
我知道远程机器名称,这台机器在同一网络上。
如果我从命令提示符 ping 那台机器,我也会得到 IP 信息。
C:Usersanikumar>ping neemqx01g
Pinging neemqx01g.efi.internal [10.210.98.194] with 32 bytes of data:
Reply from 10.210.98.194: bytes=32 time=2ms TTL=128
Reply from 10.210.98.194: bytes=32 time<1ms TTL=128
Reply from 10.210.98.194: bytes=32 time<1ms TTL=128
Reply from 10.210.98.194: bytes=32 time<1ms TTL=128
Ping statistics for 10.210.98.194:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 2ms, Average = 0ms
如何在 wxWidgets 中以编程方式实现或提升以获取 IP 地址?
答:
C函数:
const wxString GetIPbyName(const wxString& name)
{
struct hostent* pHostInfo;
pHostInfo = gethostbyname(name.c_str());
in_addr * address = (in_addr *)pHostInfo->h_addr;
std::string ip_address = inet_ntoa(*address);
return ip_address;
}
wxWidgets:
wxIPV4address ipv4;
ipv4.Hostname(m_currentServer);
wxString m_currentServer = ipv4.IPAddress();
我不是在多个活动网卡的情况下上述行为。
我已经为您浏览了文档,但您不能。
对于可移植网络名称查找,您可以考虑使用通用的跨平台网络库,例如 Boost.ASIO。
C 套接字库(几乎)是可移植的。您将有旧的gethostbyaddr
呼叫或较新的getaddrinfo
呼叫。
但是您需要一些#ifdef
才能使它们真正便携,因为:
- 标头与 Posix 系统上的标头
netdb.h
(以及可选的 sys/types.h 和 sys/socket.h)不同,在 Windows 上Ws2tcpip.h
和winsock2.h
- 在 Windows 上,您需要调用
WSAStartup
来初始化 Winsock。
相关文章:
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 我正在开发服务器,ip作为参数传递不起作用
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- 从网址获取 IP (C++)
- 我可以使用任何好的逻辑来阻止计算机将 O 放在井字游戏中的现有 X 上
- C++ 计算机猜测用户数量在 7 次猜测以内
- 在网络C 上获取计算机的IP地址
- 如何获取IP地址和计算机当前会话的名称?
- 如何使用QT获取计算机的本地IP地址
- 不使用 IP 识别计算机
- 两台具有相同 IP 地址的计算机 - 使用套接字的聊天应用程序
- 解析计算机外部IP的最简单方法
- 如何获取我的计算机外部IP地址
- 从计算机名称中查找计算机 IP 地址
- 从IP地址获取完整的计算机名称,例如 abc.xyz.xvvx.net
- C++套接字编程 - 查找客户端计算机 IP、TrueIP 和绑定端口