私の目標は、クライアントからサーバーにさまざまな種類のメッセージを送信することであり、テキストベースになります。私が確信が持てないのは、ここで部分的な読み取りをどのように行うかです。メッセージ全体を確実に受け取る必要があり、それ以上のものはありません。
誰もそれを経験したことがありますか?
これが私がこれまでに持っているものです:
private void handleNewClientMessage(SelectionKey key) throws IOException {
SocketChannel sendingChannel = (SocketChannel) key.channel();
ByteBuffer receivingBuffer = ByteBuffer.allocate(2048);
int bytesRead = sendingChannel.read(receivingBuffer);
if (bytesRead > 0) {
receivingBuffer.flip();
byte[] array = new byte[receivingBuffer.limit()];
receivingBuffer.get(array);
String message = new String(array);
System.out.println("Server received " +message);
}
selector.wakeup();
}
しかし、私にはメッセージを「終わらせる」方法がなく、確実に 1 つの完全なメッセージを持つようにします。
よろしくお願いします、O