【发布时间】:2014-11-30 17:41:22
【问题描述】:
如果我立即发送两个数据包,第二个数据包通常会被客户端忽略。在某些情况下它会捡起它,但通常就像它从未被发送一样。我已经完成了所有的调试,似乎服务器肯定在发送它,但客户端从来没有任何线索。
我正在使用 ByteBuf,它是 Netty 4 中 ChannelBuffer 的新版本。
这是我通过网络发送信息的方式:
getChannel().writeAndFlush(buffer.retain());
现在奇怪的是,如果我将这些一起发送,则不会有任何混淆。原始数据包的数据都应该是这样的,没有问题。
第二个数据包根本没有通过。
所以,例如。
ByteBuf bufferA = Unpooled.buffer();
ByteBuf bufferB = Unpooled.buffer();
bufferA.writeInt(1);
bufferB.writeInt(2);
send(bufferA);
send(bufferB);
客户端只会读取bufferA,而完全忽略bufferB,甚至不会注册它的一个字节。
如果我使用 Thread.sleep 将它们分开,客户端会很好地加载它们。
不知道该怎么办?
Server 和 Client 都在使用 netty。
编辑:我目前正在使用“作弊”修复程序,该修复程序为这种情况运行预定的执行程序(我需要一个接一个地发送两个数据包),但这根本不能解决手头的问题。
【问题讨论】:
标签: java sockets networking netty nio