Java 如何在不使用内置库函数InetAddress.getbyName()的情况下获取任何主机的IP地址?
我正在制作自己的迭代DNSresolver,其中我需要主机的ip来使用。。。但是Datagrampacket需要InetAddresstype对象。所以我不得不使用库函数Java 如何在不使用内置库函数InetAddress.getbyName()的情况下获取任何主机的IP地址?,java,sockets,dns,Java,Sockets,Dns,我正在制作自己的迭代DNSresolver,其中我需要主机的ip来使用。。。但是Datagrampacket需要InetAddresstype对象。所以我不得不使用库函数 InetAddress ipAddress = InetAddress.getByName(DNSAddress); .... //some code .... DatagramPacket dnsReqPacket = new DatagramPacket(dnsFrame, dnsFrame.length,
InetAddress ipAddress = InetAddress.getByName(DNSAddress);
....
//some code
....
DatagramPacket dnsReqPacket = new DatagramPacket(dnsFrame, dnsFrame.length, ip, DNSServerPort);
....
//some code
因此,我在想,不使用inetAddress库是否可以生成自己的getbyName()函数?您可以使用。它从地址的原始(网络)表示形式创建一个InetAddress
对象
该方法的名称相当混乱,因为与其他方法不同,它不执行反向查找:
此方法不阻塞,即不执行反向名称服务查找
使用使用
getByAddress
创建的InetAddress
以及DatagramPacket
或DatagramSocket
也不一定触发名称解析,因此不存在无限递归的风险(如果Java实现尝试使用您自己的DNS实现执行名称解析).是的,在DNS提供程序中使用JNDI。如何创建一个函数,该函数可以为我提供与InetAddress库的getByName()函数返回的相同的输出?有参考代码吗?我只是想从头开始!我在问是否可以“不使用InetAddress库”执行相同的功能。。如果可能的话,我实际上不打算使用图书馆。。我可以自己创建一个套接字或类似的东西来生成要在DatagrapPacket中作为参数传递的IP吗??或者是否有与InetAddress库的getByName()函数相同的从头开始的代码?我假设您担心如果InetAddress
本身使用DNS,会出现错误行为/无限循环。对于getByAddress
,它不这样做。它本质上是针对原始字节[]
地址的一个不太薄的包装。