javanio處理長連接_第1頁
已閱讀1頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、JavaNIO處理長連接處理長連接最近恰好要寫一個處理長連接的服務,接收日志包,然后打包成syslog形式再轉發(fā),所以在它的基礎上改了一下。主要改了兩個類,一個是Server,因為我們只關注read事件,所以write事件我們暫不處理。另外,在處理完ON_READ事件后,不能執(zhí)行key.cancel()。Java代碼1.packagenioserver2.3.impt.ISocketAddress4.impt.ServerSocket5

2、.imptjava.nio.channels.ionKey6.imptjava.nio.channels.7.imptjava.nio.channels.ServerSocketChannel8.imptjava.nio.channels.SocketChannel9.imptjava.util.Iterat10.imptjava.util.LinkedList11.imptjava.util.List12.imptjava.util.

3、Set13.14.15.16.Title:主控服務線程采用NIO實現的長連接服務器17.@authsxl18.@version1.019.20.21.publicclassServerimplementsRunnable22.privatestatic23.privateServerSocketChannelsschannel24.privateISocketAddressaddress25.protectedNotifiernotif

4、ier26.privateintpt27.28.29.創(chuàng)建主控服務線程30.@parampt服務端口31.@throwsjava.lang.Exception32.33.publicstaticintMAX_THREADS=474.處理IO事件75.if(key.isAcceptable())76.Acceptthenewconnection77.ServerSocketChannelssc=(ServerSocketChannel)k

5、ey.channel()78.notifier.fireOnAccept()79.SocketChannelsc=ssc.accept()80.sc.configureBlocking(false)81.觸發(fā)接受連接事件82.Requestrequest=newRequest(sc)83.notifier.fireOnAccepted(request)84.注冊讀操作以進行下一步的讀操作85.sc.register(ionKey.OP_

6、READrequest)86.87.elseif(key.isReadable())88.Reader.processRequest(key)提交讀服務線程讀取客戶端數據89.90.91.92.93.catch(Exceptione)94.continue95.96.97.98.另一個改動的類是Reader,改變對1的處理,這里不是break,而是拋出異常。在讀取完buffer的數據后,將數據包傳遞給另外兩個線程進行syslog的發(fā)送和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論