Assume we have a Java SocketChannel
connected to a server which is waiting for incoming data:
SocketChannel server = SocketChannel.open();
server.connect(new InetSocketAddress(ip, port));
And we send our request as below:
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);
The above code returns 0
which means it doesn't write any bytes to the channel !
But if I remove the buffer.flip()
line, it will work fine and data is sent:
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);
Why is this ?!