0

Java NIO ソケット サーバーがあります。

サーバーはJSONObjectsリモート クライアントから取得しています。SocketChannel.read(ByteBuffer)チャネルから読み取るためにメソッドを使用しています。各メッセージは、現在のメッセージの終わりを示す '\n' で終わります。

私の問題は、メソッドがより多くのバイトを読み取り、「\ n」の後に到達することがあることです.. 「\ n」が見つかるまでのread()みから読み取る方法はありますか? SocketChannelたぶんバイトごとに読むことを考えました(実装方法に関するドキュメントが見つかりませんでした..)?

他の解決策はありますか?

4

1 に答える 1

2

ByteBuffer から「\n」までのバイトを処理し、バッファの位置が「\n」の後の最初のバイトになるようにしてから、ByteBuffer.compact()を呼び出します。'\n' を過ぎたバイトはバッファに残り、次の読み取りでそれらに追加されます。

于 2012-12-24T01:37:34.720 に答える