NIO tcp机制问题
用的NIO,我的印象中,服务端等待监听链接。
这个属于【被动】,都是一收一发(就是服务器收到数据,就返回给客户端数据)。
现在需要实现一个功能,
在【服务端】任意时刻,发生一个事件,不管收没收到到数据,就主动返回一串数据给客户端(TCP一直连起的,还是用的上面那个主要用于接收并返回数据的那一个IO)
我认为一个TCP的都是被动的,等待,一收一发。
要实现这个功能的话只能让这个事件发送的数据重新建立一个UDP或TCP吧?
我朋友跟我说, 一个线程用于收,一个线程用于发,分开就可以解决。不是服务端的tcp只能收到了数据再返回么?
try
{
// 处理IO事件
if (key.isAcceptable())
accept(key);
else if (key.isReadable())
{
//执行读取客户端的数据
}
else if (key.isWritable())
{
//执行给客户端发数据
}
}
catch (Exception e)
{
key.cancel();
_log.info("处理key出错,连接可能意外中断了");
e.printStackTrace();
}
------解决方案--------------------不用啊 服务器端可以主动推送数据