最新回答 / 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客戶端服務器框架,是一個提供異步的、事件驅動的網絡應用程序框架和工具,用以快速開發高性能、高可靠性的網絡服務器和客戶端程序??梢钥焖佥p松地開發協議服務器和客戶端等網絡應用程序。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