2 ruirui610 ruirui610 于 2015.05.25 19:35 提问

JAVA NIO双向通信问题

我想要是使用JAVA NIO做一个客户端、服务器**双向通讯**的东东,但是我遇到的问题是:

服务器无法想客户端发送消息,类似这样的方式并不是我想要的:

 while(it.hasNext()) {  
                    SelectionKey key = it.next();  
                    if(key.isAcceptable()) {  
                        log.info("Server: SelectionKey is acceptable.");  
                        handler.handleAccept(key);  
                    } else if(key.isReadable()) {  
                        log.info("Server: SelectionKey is readable.");  
                        handler.handleRead(key);  
                    } else if(key.isWritable()) {  
                        log.info("Server: SelectionKey is writable.");  
                        handler.handleWrite(key);  
                    }  
                    it.remove();  

我的数据是从前台产生的,**数据产生的时间比较随机**,因此并不能像上述一下作为反馈信息发送回去,那么这种情况该怎么解决呢?

我真的没有C币啊,求懂的人帮下忙啦~~~~

2个回答

sirnuo
sirnuo   2015.05.27 10:29
已采纳

服务器是不能主动发送消息到客户端的。
只能是客户端没隔一段时间,比如1s,就请求一次服务器,获取服务器的消息,服务器才能和客户端通信。
或者 客户端和服务器一直保持sockeet连接,建立心跳。

ruirui610
ruirui610 这样啊。。谢谢啦
2 年多之前 回复
wutiandengdai
wutiandengdai   2015.05.28 23:33

有多种模式 ,建议直接使用Mina框架。
如最经常用的,在会话打开后SessionOpen时新建一个独立线程,定时向客户端发送数据。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!