最新回答 / HiramJoyce
距離提問已經(jīng)三年了,你應(yīng)該已經(jīng)有了答案,但還是簡單回答一下吧!如果是普通的網(wǎng)絡(luò)請求,一般走h(yuǎn)ttp請求的模式就夠了,一問一答,簡單方便如果是對實(shí)時(shí)性和持續(xù)連接要求比較高的,可以采用websocket方案還有一種就是通知的推送,這種一般走的差不多就是課程里的方案,tcp長連接,但是還會加上一些心跳檢測之類的機(jī)制等等,推送是個(gè)很大的學(xué)問,市面上專門做推送的廠商也有很多,可以去了解一下
2019-09-28
最新回答 / 慕村8287198
我是把下載的代碼直接放到Eclipseli運(yùn)行的,先啟動服務(wù)端沒問題,再啟動AClient或者BClient 報(bào)錯信息: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(這里接收一個(gè)ByteBuffer對象)。encode(nickName...)這里也返回的是一個(gè)ByteBuffer對象。所以還是在借助byteBuffer來操作socketChannel的。
2019-08-22
最贊回答 / 慕粉2357434992
目前常見的NIO框架1.Netty(主流版本為4.1)Netty是一個(gè)NIO客戶端服務(wù)器框架,是一個(gè)提供異步的、事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序。可以快速輕松地開發(fā)協(xié)議服務(wù)器和客戶端等網(wǎng)絡(luò)應(yīng)用程序。Github地址:https://github.com/netty/netty官網(wǎng):https://netty.io/開發(fā)文檔:https://netty.io/wiki/user-guide-for-4.x.htmlAPI文檔:https://netty....
2019-08-21
講師回答 / 張小喜
你的意思是:為什么服務(wù)器只監(jiān)聽、處理接入事件和可讀事件,而沒有監(jiān)聽、處理可寫事件是吧。是因?yàn)橐话愕姆?wù)器都是一問一答式的,就是說由客戶端問,服務(wù)器端答。所以服務(wù)器只需要監(jiān)聽可讀就好,并不需要再監(jiān)聽可寫了,也沒有這種必要。
最贊回答 / 張小喜
最開始沒有任何客戶端接入時(shí),serverSocketChannel注冊的是ACCEPT事件,等待客戶端接入;等到有客戶端接入后,服務(wù)器與客戶端建立的socketChannel就要注冊READ事件了。而serverSocketChannel還是注冊ACCEPT事件,繼續(xù)等待其他客戶端的接入。
已采納回答 / 張小喜
首先,一個(gè)Channel只能被注冊到Selector上一次,如果將Channel注冊多次到Selector上,其實(shí)相當(dāng)于是在更新。所以,如果對Channel感興趣的事件沒有變化,是不需要重新注冊的。故,源碼中把再次注冊的代碼去掉也是不影響運(yùn)行的,此處又注冊了一遍只是想讓大家加深印象。沒想到給你帶來了困惑,不好意思啊。