我正在制作自己的迭代 DNS 解析器,我需要主机的 ip 才能使用...但是 Datagrampacket 需要 InetAddresstype 对象。所以我不得不使用库函数。
InetAddress ipAddress = InetAddress.getByName(DNSAddress);
....
//some code
....
DatagramPacket dnsReqPacket = new DatagramPacket(dnsFrame, dnsFrame.length, ip, DNSServerPort);
....
//some code
所以,我在想是否可以在不使用 inetAddress 库的情况下创建我自己的 getbyName() 函数?
最佳答案
您可以使用 java.net.InetAddress.getByAddress(byte[])
.它根据地址的原始(网络)表示形式创建一个 InetAddress
对象。
该方法的命名相当困惑,因为它与 gethostbyaddr
不同。 ,它不执行反向查找:
This method doesn't block, i.e. no reverse name service lookup is performed.
使用 getByAddress
和 DatagramPacket
或 DatagramSocket
创建的 InetAddress
不一定会触发名称解析,或者,因此不存在无限递归的风险(以防 Java 实现尝试使用您自己的 DNS 实现执行名称解析)。
关于java - 如何在不使用内置库函数 InetAddress.getbyName() 的情况下获取任何主机的 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195776/