用ServerSocketChannel写了个非阻塞服务端,客户端发来什么消息 服务端原样发回去。/**
* SocketChannel connChannel = server.accept();
*/
...
else if(key.isReadalbe()){
connChannel = (SocketChannel)key.channel();
byteBuf.clear();
bufLength = connChannel.read(byteBuf);
byteBuf.flip();
connChannel.write(byteBuf);
}用VC写了个客户端做测试 recv的时候发现服务端是分几次把消息发来的,有没有可能一次性将消息发来
也就是说让write一次性将byteBuf写入到通道中
write在JDK DOC里描述是
public abstract int write(ByteBuffer src)
throws IOException
“尝试最多向该通道中写入 r 个字节,其中 r 是调用此方法时缓冲区中剩余的字节数,即 src.remaining()。”
* SocketChannel connChannel = server.accept();
*/
...
else if(key.isReadalbe()){
connChannel = (SocketChannel)key.channel();
byteBuf.clear();
bufLength = connChannel.read(byteBuf);
byteBuf.flip();
connChannel.write(byteBuf);
}用VC写了个客户端做测试 recv的时候发现服务端是分几次把消息发来的,有没有可能一次性将消息发来
也就是说让write一次性将byteBuf写入到通道中
write在JDK DOC里描述是
public abstract int write(ByteBuffer src)
throws IOException
“尝试最多向该通道中写入 r 个字节,其中 r 是调用此方法时缓冲区中剩余的字节数,即 src.remaining()。”
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货