我用java用AsynchronousChannelGroup制作简单的聊天程序,但有些收到的数据还没有完成。或达到非常慢(1s~2s)。 (我认为它对客户来说是随机的。有些客户端可以很好地连接到服务器,但有些客户端达到非常慢并最终断开连接)
我尝试使用下面的代码获取数据回调方式
class socket
channel.read(readBuffer, this, new CompletionHandler<Integer, AsyncSocket>() {
@Override
public void completed(Integer size, AsyncSocket socket) {
ByteBuffer read = socket.readBuffer;
socket.callback.onRead(socket, read, read.limit() - read.position());
read.compact();
socket.channel.read(read, socket, this);
}
@Override
public void failed(Throwable e, AsyncSocket socket) {
// for close and output err
socket.closeSoft(new Exception(e));
}
});
class socket
public synchronized void write(ByteBuffer buffer) {
try {
while (buffer.hasRemaining()) {
channel.write(buffer).get();
}
} catch (Exception e) {
this.close(e);
}
}
class callback //server
public void onRead(AsyncSocket socket, ByteBuffer readBuffer, int size) {
// write every client using write() if all data transformed;
}
当我尝试访问时,某些客户端省略了回调,并且很长一段时间,错误&#34;信号量超时&#34;用closeSoft方法显示。
我认为发生的情况是随机的,我无法理解这个异常。请帮我。谢谢!