通过hostname获取IP

hostname -i 
获取 IP 地址对应的 hostname 可以使用多种编程语言实现,以下是几种常见语言的示例: #### Python ```python import socket ip = "108.174.2.1" try: hostname, _ = socket.gethostbyaddr(ip) print(f"IP: {ip} -> Hostname: {hostname}") except socket.herror: print(f"IP: {ip} -> Hostname: N/A") ``` 上述代码使用了 Python 的`socket`模块中的`gethostbyaddr`函数,通过 IP 地址获取对应的主机名。如果无法解析主机名,会捕获`socket.herror`异常并打印`N/A` [^1]。 #### Java ```java import java.net.InetAddress; import java.net.UnknownHostException; public class GetName { public static void main(String[] args) { byte ip[] = {(byte)202, (byte)117, (byte)1, (byte)13}; try { InetAddress address = InetAddress.getByAddress(ip); String name = address.getHostName(); System.out.println("Host name:" + name); } catch (UnknownHostException e) { e.printStackTrace(); } } } ``` 此 Java 代码使用`InetAddress`类,通过`getByAddress`方法根据 IP 地址获取`InetAddress`对象,再使用`getHostName`方法获取主机名。若出现异常,会打印异常堆栈信息 [^3]。 #### C++(Windows 环境) ```cpp #include <WinSock2.h> #include <iostream> using namespace std; #pragma comment(lib, "ws2_32.lib"); int main() { WSADATA wsaData; WORD sockVersion = MAKEWORD(2, 2); ::WSAStartup(sockVersion, &wsaData); char ip[] = "108.174.2.1"; hostent *hp; in_addr addr; inet_pton(AF_INET, ip, &addr); hp = gethostbyaddr((const char *)&addr, sizeof(addr), AF_INET); if (hp != NULL) { cout << "Hostname: " << hp->h_name << endl; } else { cout << "Hostname lookup failed." << endl; } ::WSACleanup(); return 0; } ``` 该 C++ 代码在 Windows 环境下,使用`Winsock`库,通过`gethostbyaddr`函数根据 IP 地址获取主机名。若获取失败,会输出相应提示信息 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值