Ich führe diesen Code und wenn ich Byte-Array namens Puffer erstellen, wird es durch 0 initialisiert, also wenn ich die .read() Funktion mache, wartet es nicht, irgendetwas zu lesen, weil der Puffer ist voll. Wenn ich den Puffer deklarieren und itialize und drucken, wenn danach, ist es voller Nullen und so weiter lesen es nicht warten, um Daten aus dem Socket zu empfangen.Bytes von Socket auf Java lesen
Ich möchte Bytes aus ac Server erhalten speichert, die eine char [] Nachricht
public class th extends Thread {
public static ServerSocket sc;
public static byte[] buffer = new byte[256];
public th(){
sc = null;
}
public th (ServerSocket userSC){
sc = userSC;
}
public void run() {
System.out.println("En la clase TH");
Socket serverAddr;
boolean condicion = true;
DataInputStream in;
int p;
for (p = 0; p < 256; p++) System.out.print(buffer[p] + " ");
/*try {
serverAddr = sc.accept();
in = new DataInputStream(serverAddr.getInputStream());
}
catch (Exception e){
System.err.println("Error creando socket");
}*/
try {
System.err.println("-1---------------------------------");
serverAddr = sc.accept();
in = new DataInputStream(serverAddr.getInputStream());
System.err.println("0---------------------------------");
System.err.println("1---------------------------------");
in.read(buffer);
for (p = 0; p < 256; p++) System.out.print(buffer[p] + " ");
int a = in.read(buffer);
if (a < 0) {
exit();
}
for (p = 0; p < 256; p++) System.out.print(buffer[p] + " ");
String res = new String(buffer);
System.out.println(res);
System.out.println("NO ESPERA");
serverAddr.close();
}
catch (IOException e){
System.err.println("Error creando socket");
}
}
}
Bitte nehmen Sie sich etwas Zeit, um Ihren Code lesbar zu formatieren und konventionelle Namen zu verwenden - Sie sollten Ihre Frage so einfach wie möglich stellen. Es hilft nicht, dass Sie den von 'read' zurückgegebenen Wert ignorieren ... –
Es hat nichts mit den Anfangswerten des Puffers zu tun. Der einzige Grund, warum diese Cide nicht darauf wartet, etwas zu lesen, ist, wenn 'read()' -1 zurückgibt, eine Möglichkeit, die Sie ignorieren, was darauf hinweist, dass der Peer die Verbindung geschlossen hat. Bitte formatieren Sie dieses unlesbare Chaos. – EJP
Ja, die Funktion read() gibt -1 zurück, aber ich kenne den Grund nicht. Wenn Sie mir helfen können .... :( – MrSman