SocketChannel
着信データを待機しているサーバーにJava が接続されているとします。
SocketChannel server = SocketChannel.open();
server.connect(new InetSocketAddress(ip, port));
そして、以下のようにリクエストを送信します。
byte[] request = "This is a request for server!".getBytes();
ByteBuffer buffer = ByteBuffer.wrap(request);
buffer.flip();
int write = 0;
while (buffer.hasRemaining())
write += server.write(buffer);
System.out.println(write);
上記のコードは、チャネルにバイトを書き込まないこと0
を意味します。
しかし、行を削除すると、buffer.flip()
正常に機能し、データが送信されます。
byte[] request = "This is a request for server!".getBytes();
ByteBuffer buffer = ByteBuffer.wrap(request);
int write = 0;
while (buffer.hasRemaining())
write += server.write(buffer);
System.out.println(write);
どうしてこれなの ?!