2017-01-12 2 views
-4

verlassen, während ich versuche, die Daten aus dem gepufferten Leser zu lesen, habe ich die Daten.Aber ich kann nicht Verlassen Sie die while-Schleife, wenn die Zahl gleich null ist.Wenn ich Inputstream-Leser ich kann nicht aus der While-Schleife nach dem Lesen der Daten aus dem gepufferten Leser

+0

Ihr Code funktioniert wie vorgesehen. Es wird diese Schleife am Ende des Streams verlassen. Unklar, was du erwartest oder fragst. – EJP

+0

während ich versuche, die Daten aus dem gepufferten Leser zu lesen, habe ich die Daten. Aber ich kann nicht aus der While-Schleife verlassen, wenn die Zahl gleich null ist. Ich habe die Nachricht wie folgt erhalten: "D/jdwp: processIncoming D/jdwp: handlePacket: cmd = 0x6, cmdSet = 0x1, len = 0xB, id = 0x2873C, flags = 0x0, dataLen = 0x0" – jibin

+0

Sie * werden * beenden Die While-Schleife, wenn 'Nummer' Null ist. Keine zwei Möglichkeiten. Möglicherweise erwarten Sie, dass es magisch unter den falschen Umständen null wird? – EJP

Antwort

1

readLine() kehrt bei Strom null, und nicht vor, und das Ende des Stroms auf einer Buchse nur auftritt, wenn der Peer die Verbindung geschlossen hat. Ihre Erwartungen scheinen fehl am Platz zu sein.

+0

auf jede andere Weise ohne zu schließen die Verbindung – jibin

+0

Jede andere Möglichkeit, was zu tun? Definieren Sie Ihre Anforderung. – EJP

+0

Beenden Sie die While-Schleife, ohne die Peer-Verbindung zu schließen. – jibin

-1

Es ist, weil Sie auf das Verständnis der Readline- Funktion und Implementierung davon scheitern. Sie lesen Daten aus Ihrem Puffer und vergleichen die Daten mit null, was offensichtlich nicht das ist, was Sie wollen. So, hier ist, wie ich Daten aus einem TCP-Socket lesen möchte.

while(statement == true){ 
    int count = bufferedInputStream.read(buffer); 
    if (count == -1){ 
     // Socket has been closed 
    } else { 
     // Data has been read. 
     // Do comparison here. 
    } 
} 

Hoffe, das hilft.

+0

Sein Problem a, dass er aufhören möchte, in einem anderen (unausgesprochenen) Zustand zu lesen als am Ende des Streams. Dieser Code löst es nicht. – EJP

+0

Es klang ziemlich klar für mich .. es gibt keinen anderen Weg, die Schleife zu beenden, wenn das der Fall ist. –

Verwandte Themen