最新回答 / HiramJoyce
距离提问已经三年了,你应该已经有了答案,但还是简单回答一下吧!如果是普通的网络请求,一般走http请求的模式就够了,一问一答,简单方便如果是对实时性和持续连接要求比较高的,可以采用websocket方案还有一种就是通知的推送,这种一般走的差不多就是课程里的方案,tcp长连接,但是还会加上一些心跳检测之类的机制等等,推送是个很大的学问,市面上专门做推送的厂商也有很多,可以去了解一下
2019-09-28
最新回答 / 慕村8287198
我是把下载的代码直接放到Eclipseli运行的,先启动服务端没问题,再启动AClient或者BClient 报错信息:Exception in thread "main" java.net.ConnectException: Connection refused: connect at sun.nio.ch.Net.connect0(Native Method) at sun.nio.ch.Net.connect(Net.java:454) at sun.nio.ch.Net.conn...
2019-08-26
最新回答 / 张小喜
你看socketChannel.write(这里接收一个ByteBuffer对象)。encode(nickName...)这里也返回的是一个ByteBuffer对象。所以还是在借助byteBuffer来操作socketChannel的。
2019-08-22
最赞回答 / 慕粉2357434992
目前常见的NIO框架1.Netty(主流版本为4.1)Netty是一个NIO客户端服务器框架,是一个提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。可以快速轻松地开发协议服务器和客户端等网络应用程序。Github地址:https://github.com/netty/netty官网:https://netty.io/开发文档:https://netty.io/wiki/user-guide-for-4.x.htmlAPI文档:https://netty....
2019-08-21
讲师回答 / 张小喜
你的意思是:为什么服务器只监听、处理接入事件和可读事件,而没有监听、处理可写事件是吧。是因为一般的服务器都是一问一答式的,就是说由客户端问,服务器端答。所以服务器只需要监听可读就好,并不需要再监听可写了,也没有这种必要。
2019-05-29
最赞回答 / 张小喜
最开始没有任何客户端接入时,serverSocketChannel注册的是ACCEPT事件,等待客户端接入;等到有客户端接入后,服务器与客户端建立的socketChannel就要注册READ事件了。而serverSocketChannel还是注册ACCEPT事件,继续等待其他客户端的接入。
2019-05-14
已采纳回答 / 张小喜
首先,一个Channel只能被注册到Selector上一次,如果将Channel注册多次到Selector上,其实相当于是在更新。所以,如果对Channel感兴趣的事件没有变化,是不需要重新注册的。故,源码中把再次注册的代码去掉也是不影响运行的,此处又注册了一遍只是想让大家加深印象。没想到给你带来了困惑,不好意思啊。
2019-05-07