#java #sockets #dns #ip #packet
#java #сокеты #dns #ip #пакет
Вопрос:
Я хочу написать небольшую программу для получения IP-адресов некоторых веб-сайтов путем ручной отправки и получения пакета данных из Google DNS, Open DNS.
Как мне помочь.
Я написал это, но не работает должным образом.
public static void main(String args[]) throws Exception
{
String str="stackoverflow.com";
DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length());
DatagramSocket ds=new DatagramSocket();
dp.setAddress(InetAddress.getByName("8.8.8.8"));
dp.setPort(53);
ds.send(dp);
System.out.println("SENDED");
byte[] receive=new byte[1024];
dp.setData(receive);
System.out.println("PREPARING FOR RECEIVE : ");
ds.receive(dp);
System.out.println(new String(receive));
}
Ответ №1:
Если вы не хотите внедрять протокол DNS, вас может заинтересовать dnsjava.
Ответ №2:
вам нужно будет реализовать протокол DNS — отправной точкой может бытьhttps://www.rfc-editor.org/rfc/rfc1035
Комментарии:
1. Если вы не знакомы с тем, как работает DNS, стоит также заглянуть в Википедию: en.wikipedia.org/wiki/Domain_Name_System
2. Я знаю это, но я не знаю структуру данных, которые отправляются на dns-сервер. Можете ли вы мне помочь
3. Я не собираюсь писать код для вас, если вы это имеете в виду. Я бы начал с просмотра библиотеки dnsjava, которую опубликовал @Thor, и вы, скорее всего, найдете там необходимые структуры.
4. О, большое спасибо. Я никогда не надеюсь, что вы напишете код для меня. У меня нет этой идеи.
Ответ №3:
Протокол DNS определен в RFC 1034.