Ich verwende die SocketChannel
Java-Klasse für eine Client/Server-Anwendung. Ich kann Daten senden und abrufen. Aber wenn meine Daten '\n'
enthalten, dann lese ich nicht die richtigen Daten. Zum Beispielwie senden und dann lesen n mit SocketChannel in Java
sending data = "Hi dear"
receiving data = "Hi dear"
sending data = "Hi dear\n\n i am fine"
receiving data = "Hi dear"
sending data = "Hi dear\\n\\n i am fine"
receiving data = "Hi dear\n\n i am fine"
ByteBuffer byteBuffer = ByteBuffer.allocate(BUFSIZE);
int nbytes = socketChannel.getChannel().read(byteBuffer);
Ich benutze US-ASCII-Decodierung. Wie kann ich diese Art von Problem lösen?
Danke, Deepak
Sollten Sie auch erwähnen, können Sie angeben, ob sich der Kanal im nicht blockierenden Modus befindet. –
Ja, Kanal befindet sich im nicht blockierenden Modus. Bitte gehen Sie noch einmal durch mein Beispiel. – Deepak
Es hängt wirklich davon ab, welche Art von Socket es ist. Ein Stream-Socket (z. B. TCP) hat keine Grenzerhaltungen, wie Sie bereits angedeutet haben. Ein Datagramm-Socket (z. B. UDP) ist jedoch sehr stark über Pakete, die mit expliziten Grenzen gesendet und empfangen werden. –