4
Ich versuche, Udp-Paket an angegebene DNS-Server zu senden und eine Antwort von DNS-Server zu erhalten.Java senden Udp-Paket an DNS-Server
Das Problem ist, dass ich nicht die Antwort vom Server bekomme. Ich versuche ein Paket mit meinem Client-Socket zu erhalten, habe aber keinen Erfolg.
Suchen Sie nach Hilfe, um dieses Problem zu beheben.
Das ist mein UdpClient.java
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
class UdpClient
{
public static void main (String args[]) throws Exception
{
Scanner scan = new Scanner(System.in);
System.out.print("Enter a hostname: ");
// host name
String hostname = scan.next();
// socket
DatagramSocket clientSocket = new DatagramSocket();
InetAddress ipAddress = InetAddress.getByName(hostname);
String message = "0471001000000";
byte[] data = message.getBytes(StandardCharsets.UTF_8);
// datagram packet
DatagramPacket sendPacket = new DatagramPacket(data, data.length, ipAddress, 53);
// send the packet
clientSocket.send(sendPacket);
// set a receive timeout, 2000 milliseconds
// packet for receive
byte[] rdata = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(rdata, rdata.length, ipAddress, 53);
// wait for a response from the server
clientSocket.receive(receivePacket);
System.out.println("Host Name: " + ipAddress.getHostName());
System.out.println("Canonical Host Name: " + ipAddress.getCanonicalHostName());
System.out.println("Local Host: " + ipAddress.getLocalHost());
System.out.println("Loopback Address: " + ipAddress.getLoopbackAddress());
System.out.println("IPv4: " + ipAddress.getHostAddress());
String serverMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("FROM SERVER: " + serverMessage);
}
}
Sie überprüfen Haben der Server den Empfang Paket? – flakes
Wie kann ich das überprüfen? Zum Beispiel, wenn ich "google.com" eingeben, wartet das Programm auf Zeile clientSocket.receive (reicePacket) und tut nichts. –
Mein Fehler. Ich nahm an, dass es ein lokaler Server war. – flakes