版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、10/10HYPERLIN 服務器端: YPELINK ”va代碼 :imot javaio。Exetion; impor.nScktAddress; ipor。everSocket; imoSocket; impra.nio。Byteuffer;mpr jaani.hnnls。SlectionKey; pot java.no。cannelSeec;mport va。io。hanels.ServerocketChanl; importjva。ni。channels。Socethannl;import ja。nio.arstChrse; importjva。til。HasMap; mprt aa
2、.ut。Mp; imortjva.il。St; publi cassNIOSSever privinpor = 888; /解碼buffe 不敗戰(zhàn)神:rivateChase = ChrseorName(gbk); /*接受數(shù)據(jù)緩沖區(qū)/ rte statc ByteBe Bufer= ByteBufer。loate(1024); 發(fā)送數(shù)據(jù)緩沖區(qū)/ privtea ByeBuffrrBfer= ByteBffer。alcate(124); /映射客戶端channe / rive Mp cliensap = n shaSring, ocetC();piv saticSelecto selctor;p
3、ulic NIOSevr(intpot) thsport = ort; r int(); cac (xetin e) eptStackTrace(); privt od it()hwsIExcetion / 啟動YPERINK 服務器端,配置為非阻塞,綁定端口,注冊accep事件 帝尊: *CEP事件:當服務端收到客戶端連接請求時,觸發(fā)該事件 / SeverSocketChann serverSocketCnnl= SeverSockethannelpe(); serverSockethan.crecing(flse); SvrSoce serveoke seveSckChannel。scke
4、t(); servecetbind(e IetockAddres(port)); eeco = Selecto。open();sererSocetCnnel.rgiste(selto, SeltioKy.AEP); ytemou.pintln(ver sat on port:”+pot); /* 服務器端輪詢監(jiān)聽,select方法會一直阻塞直到有相關事件發(fā)生或超時 *天驕無雙:private idlite()hile (true) ry seer.slect();返回值為本次觸發(fā)的事件數(shù) SeSlecionKey lectinKy = elector.slectedy(); for(Selct
5、inKy k: selectinKes) hndle(key);seletoKeysclea();/清除處理過的事件 ach (Expo ) epintStacTce(); ek; * 處理不同的事件 */ prve vid handle(eectinKey selectiney) throws OException ervercketChanel srver = nul; Skannl clent nll; StrirceieText=nul; int count=0; (seletnKey.isAcptable()) 客戶端請求連接事件 人皇: * seversockt為該客戶端建立cet
6、連接,將此cet注冊RA事件,監(jiān)聽客戶端輸入 RE事件:當客戶端發(fā)來數(shù)據(jù),并已被服務器控制線程正確讀取時,觸發(fā)該事件 */ svr (SreSocetnne) eletonKe.hae(); cliet = server。acpt();cliet.configureBoking(alse); clietreste(sector, SelectnKeyP_ED); ele f (slecinKeiReaabe() / ED事件,收到客戶端發(fā)送數(shù)據(jù),讀取數(shù)據(jù)后繼續(xù)注冊監(jiān)聽客戶端 clint = (SckeCanne)ectinKy。channel(); rBfferlear(); out = nt
7、。read(ufe); i(u ) ruffer.fli(); receieex = tring.aueOf(c.do(rBufer)。ray();St。ut。prin(clet.torin():reciveext); dispatc(clet,recivet); lient(SoketChannel) seectionKey.chann(); clitregistr(lectr, SeletionKey。O_RED);斬龍: / 把當前客戶端信息 推送到其他客戶端 / priate od isptch(SokeCannl clent,tring ifo) hrows OException S
8、oke s = clen。soc(); Sin nae +s.getInAde().toString()。sbtrig(1)+”:”Ineger.toHexStrn(clie。hshod())+; f(!clintsap.sEmty())for(ap。EntryString,oetChanlent : clentsapntrySet()) Sokethann te = entrygetValue();f(!clint.equals(temp)) sBuffer。cla(); Bufr。pu((ame+:”+info)。getByt(); Buffer。flip();輸出到通道 奧術神座: te
9、。wte(suffer); clintappt(nae, ciet); publcsttic void mai(tring ag)rowsIOExepton NIOSrerrve =new IOSServe(77); ervr.isen(); 客戶端,可運行啟動多個: HERLINK ava代碼: pr java.iBuferedReader; import java。io.IOExeption; import jaa.。nputStreamRade; impor。InetSokeAddes; iportj。ni.BeBer; imor jav。nio.cannels。SelctionKey;
10、 imprt jano.chanels.Selectr;impo javn。hnels.ockeCannel;ipor va。uiDa; imo java.uil。Set; ul casNIOien 發(fā)送數(shù)據(jù)緩沖區(qū)/ 飛速小說:privattati ByteufrsBuffer =ByteBufer.aoct(14); /*接受數(shù)據(jù)緩沖區(qū)/ rivte static yeBuffr Buffer yteBuffer。aloate(102); 服務器端地址/ pivate netScetAddrsSERVER; prv staic Selectelect;prvate satic oketCha
11、nl clien; privae stati Srng recivText; private saticSin enText; privatestatic intcoun0;publi NOCliet(t prt) RV= e InetocetAdrs(localo, pt);ini(); publi vod init() y * 客戶端向服務器端發(fā)起建立連接請求 / SockeChan socetChanl= SocketChane。opn();ocetChannelconfigureBocki(ale); selector = eltor.opn(); ocktChannel.rster(
12、seector,lectoneyOCONNCT);soketannel.onect(SRVR); /* *輪詢監(jiān)聽客戶端上注冊事件的發(fā)生 天驕無雙:/ whil(true) selec.elct(); SetSlectoneykeSt = seectorselectKes();or(finl eletiKyey :yS) andle(ky); ; kyStclear(); cach (Exepion ) e。pintStakrace(); publc stacoimain(Srin args)thrwIxetion Nlient client = eNOClet(77); rivte void
13、 handl(SelionKeyslectinKe) rows IExeption if (sltonK。sConnectble()) /* 連接建立事件,已成功連接至服務器 */client= (SokChannl) sectioney。chnel(); if (clen。isConnctionPndin() cient.finishCnct();Syeot.itln(connct sucess !”); sBuffrclear(); sBffer.put((e at()。toocaleSrng() onnected!).gytes()); Buffr.lip(); lit。rite(sBu
14、ffer);/發(fā)送信息至服務器 /原文來自站長網(wǎng) 天驕無雙:* 啟動線程一直監(jiān)聽客戶端輸入,有信心輸入則發(fā)往服務器端 因為輸入流是阻塞的,所以單獨線程監(jiān)聽/ ew head()Oeride publc void ru() hil(true) ty Buffercler();InputStreamReadeit = new IuramReade(yste。);ffeReade br= newuffreader(input); sendText = br.readLine(); /* 未注冊WRIE事件,因為大部分時間cha都是可以寫的*ufr。put(senText.geByts(); sBufr.flip(); cliet。wre(suffer); catch(IEcepie) e.priStacae(); break; ; 。stat(); /注冊讀事件 cliet.reter(eleor, eletiney_EAD); ee i (electiony.isReadabe()) / *讀事件觸發(fā) 九星天辰訣: 有從服務器端發(fā)送過來的信息,讀取輸出到屏幕上后,繼續(xù)注冊讀事件 * 監(jiān)聽服
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024美發(fā)店與消防部門安全檢查合同
- 2025年度校園食堂廚師勞務派遣合同4篇
- 2025年度圖書代售及推廣服務合同4篇
- 2024碎石原料交易市場建設合同
- 2024裝修工程額外項目合同書一
- 2025年度智慧城市建設綜合解決方案承包合作協(xié)議4篇
- 2025年度SEO風險管理與合規(guī)性審核合同3篇
- 2025年度山林土地流轉(zhuǎn)與綜合開發(fā)承包合同4篇
- 2024正規(guī)商鋪買賣合同合同標的物權屬核實協(xié)議3篇
- 2024年教學專用高清晰度數(shù)碼集成背投行業(yè)發(fā)展趨勢報告
- GB/T 9755-2001合成樹脂乳液外墻涂料
- GB/T 10609.3-1989技術制圖復制圖的折疊方法
- GB 4053.2-2009固定式鋼梯及平臺安全要求第2部分:鋼斜梯
- 通力電梯培訓教材:《LCE控制系統(tǒng)課程》
- 佛山市內(nèi)戶口遷移申請表
- 品管圈PDCA持續(xù)質(zhì)量改進提高靜脈血栓栓塞癥規(guī)范預防率
- 一次函數(shù)單元測試卷(含答案)
- 陜西省榆林市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細
- 天車設備維護檢修標準設備維護檢修規(guī)程
- 中國智能物聯(lián)網(wǎng)(AIoT)研究報告
- 江蘇新海石化有限公司廢氣治理項目環(huán)境影響報告書
評論
0/150
提交評論