2009-04-23 11 views
1

Ich habe ein Socket-Programm geschrieben, wo der Client readUTF() und writeUTF() verwendet, um mit dem Server zu kommunizieren, während der Server read() und verwendet write() um mit dem Client zu kommunizieren.Java Socket Programm kann Daten nicht lesen, wenn der Server Daten mit write sendet und Daten mit readUTF() empfängt

Mein Server kann alle Daten vom Server lesen. Ich benutze write() auf der Serverseite und readUTF() auf der Clientseite.

So kann mein Client in diesem Szenario nicht alle Daten erhalten, die vom Server gesendet werden, wenn die Datengröße groß ist, nur ein Teil der Daten empfangen wird.

Was sollte getan werden, um sicherzustellen, dass alle Daten übertragen werden?

+0

Können Sie einen kleinen Hintergrund zur Socket-Implementierung geben? UDP oder TCP usw.? –

Antwort

0

Beachten Sie, dass readUTF und writeUTF eine modifizierte Form von UTF verwenden. Ich weiß nicht, was Sie mit lese() und write() auf dem Server senden, aber Sie sollten sicherstellen, dass die Kompatibilität zwischen dem, was der Client erwartet, und dem, was der Server erwartet, gewährleistet ist.

Ich würde sowohl Client und Server senden/empfangen mit der gleichen Methode machen. Ich weiß nicht, ob das dein Problem verursacht, aber es wird dir eine nicht verwandte Trauer ersparen.

1

Verwenden Sie in diesem Szenario nicht readUTF und writeUTF. Stattdessen Bytefeldgruppen lesen und schreiben:

read(byte [] b) 

konvertieren dann das Byte-Array in einen String den entsprechenden String-Konstruktor:

public String(byte[] bytes, 
       String charsetName) 

sollten Sie versuchen, Beifang UnsupportedEncodingException Ausnahmen.

Verwandte Themen