public class MyClass{
static final String BROADCAST = "Broadcasting";
public static final int PORT = 12344;
public static String host = "localhost";
public static void main(String[] args) {
// TODO Auto-generated method stub
DatagramSocket serverSocket;
try {
serverSocket = new DatagramSocket(PORT);
InetAddress addr = InetAddress.getByName(host);
byte[] sendData = BROADCAST.getBytes();
DatagramPacket sendPacket = new DatagramPacket(
sendData, //data byte array
sendData.length, //number of bytes
addr, //destination host address
PORT); //destination port
serverSocket.send(sendPacket);
byte[] rcvData = new byte[1024];
DatagramPacket rcvPacket = new DatagramPacket(
rcvData, rcvData.length);
//packet gets filled in by receive
serverSocket.receive(rcvPacket);
//Why the two Strings are not the same?
//Why the bytes derived from the same string different?
byte[] a = rcvData;
byte[] b= BROADCAST.getBytes();
System.out.println(a.equals(b));
System.out.println(new String(a));
System.out.println(new String(b));
System.out.println((new String(a).equals(new String(b))));
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
ich bemerkt habe, dassString in Bytes können nicht auf die äquivalenten Strings konvertieren
1) Die Byte-Arrays I got verschieden sind getByte() Methode verwendet.
2) Obwohl die Zeichenfolge von a und b (aus dem Code) genau gleich sind, aber sie sind nicht gleich. Hier
ist der Ausgang I aus vier Druckanweisungen erhalten:
false
Broadcasting
Broadcasting
false
Können Sie nicht einen Debugger verwenden und die 'real' Daten sehen? –
rcvData ist ein Byte [] der Länge 1024, während "Broadcasting" .getBytes() kürzer sein muss. Außerdem vergleichen Sie Arrays nicht so (Sie sollten Arrays.equals (arr1, arr2) verwenden). –
Da die Länge von "a" 1024 ist und die Länge von "b" (höchstwahrscheinlich) 12 ist - wie würden Sie erwarten, dass diese beiden gleich sind? Aber eigentlich sind die Dinge noch schlimmer als in https://stackoverflow.com/questions/8777257/equals-vs-arrays-equals-in-java –