クライアント/サーバーアプリケーション用にJavaクラスSocketChannel
を使用しています。私はデータを送信して取り出すことができます。しかし、私のデータに'\n'
が含まれていれば、私は正しいデータを読まない。例えば、JavaでSocketChannelを使用して nを送信して読み取る方法
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);
私はUS-ASCIIデコードを使用しています。このタイプの問題を克服するにはどうすればいいですか?
おかげで、 ディーパック
チャネルがノンブロッキングモードであるかどうかを指定する必要があります。 –
はい、チャネルは非ブロッキングモードです。 もう一度私の例を見てください。 – Deepak
それは本当にどのようなソケットの種類に依存します。ストリームソケット(fe.、TCP)には、あなたが暗示したように、境界の保存がありません。しかしながら、データグラムソケット(すなわち、UDP)は、明確な境界で送受信されるパケットに関するものである。 –