最新回答 / 中国鹰派
服务器接收客户端请求时,需要读取客户端发送的请求数据,这时候要注册可读事件;服务器接收完客户端的请求后,需要向客户端发送一个响应,也就是需要向客户端写数据,这时候要注册可写事件;服务器将响应写给客户端后,又需要等待客户端的下一次请求,所以又需要注册可读事件;
2020-02-04
首先这个set是HashSet,而HashSet应该是和HashMap一样,是采用哈希值来做唯一标识的,又因为SelectionKey并没有重写hashCode和equals方法,所以每个新的SelectionKey实例都会一直存在Set内,并不会被替换,所以需要手动移除。
2020-01-22
已采纳回答 / chenlianlian
如果接收数据也放在main线程中,while(scanner.hasNextLine) 一直在循环,你的数据怎么能接收到呢,或者你先把接收数据代码是一个while(true)代码是死循环,线程一直在执行一个循环体中的代码
2019-11-15
最新回答 / HiramJoyce
距离提问已经三年了,你应该已经有了答案,但还是简单回答一下吧!如果是普通的网络请求,一般走http请求的模式就够了,一问一答,简单方便如果是对实时性和持续连接要求比较高的,可以采用websocket方案还有一种就是通知的推送,这种一般走的差不多就是课程里的方案,tcp长连接,但是还会加上一些心跳检测之类的机制等等,推送是个很大的学问,市面上专门做推送的厂商也有很多,可以去了解一下
2019-09-28