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