高級網(wǎng)絡(luò)編程框架一日一記_第1頁
高級網(wǎng)絡(luò)編程框架一日一記_第2頁
高級網(wǎng)絡(luò)編程框架一日一記_第3頁
高級網(wǎng)絡(luò)編程框架一日一記_第4頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

一 網(wǎng)絡(luò)編程基礎(chǔ)原 網(wǎng)絡(luò)編程(Socket)概 什么是 Java中的 什么是同步和異 什么是阻塞和非阻 BIO編 NIO編 AIO編 二 簡 Netty架 線程模 基礎(chǔ)程序演 案 HTTP協(xié)議處 流數(shù)據(jù)的傳輸處 一、網(wǎng)絡(luò)編程(Socket)首先注意,Socket不是Java中獨(dú)有的概念,而是一個語言無關(guān)標(biāo)準(zhǔn)。任何可以實(shí)現(xiàn)網(wǎng)絡(luò)編程的編程語言都有Socket。什么建立網(wǎng)絡(luò)通信連接至少要一個端。socket本質(zhì)是編程接口(API),對TCP/IP的封裝,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動機(jī),提供了網(wǎng)絡(luò)通信的能力。Socket的英文原義是“孔”或“插座”BSDUNIX的進(jìn)程通信機(jī)制,取后一種意思。通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄,可以用來實(shí)現(xiàn)不同虛Internet上的主機(jī)一般運(yùn)行了多個服務(wù)軟件,同時提供幾Socket正如其英文原義那樣,像一個多孔插座。一臺主機(jī)猶如布滿各種插座的房間,每個插220110伏交流電,有的則提供有線電視??蛻糗浖⒉孱^插到不同編號的插座,就可以得到不同的服務(wù)。Socket連接Java型。ServerSocket是服務(wù)端應(yīng)用類型。Socket是建立連接的類型。當(dāng)連接建立成功后,服務(wù)SocketSocket對象示例,完成會話的所有IO操作并己的事情,而當(dāng)IO操作已經(jīng)完成的時候會得到IO完成。;阻塞和非阻塞是針對于進(jìn)程在數(shù)據(jù)的時候,根據(jù)IO操作的就緒狀態(tài)來采取的不同ATM排隊(duì)取款,你只能等待(IO時,Java調(diào)用會一直阻塞到讀寫完;塞IO時,如果不能讀寫Java調(diào)用會馬上返回,當(dāng)IO分發(fā)器通知可讀寫時再繼續(xù)進(jìn)行BIO端啟動一個ServerSocket來網(wǎng)絡(luò)請求,客戶端啟動Socket發(fā)起網(wǎng)絡(luò)請求,默認(rèn)情況下ServerSocket回建立一個線程來處理此請求,如果服務(wù)端沒有線程可用,客戶端則會阻塞等ServerSocketServerSocketsocketsocketsocket創(chuàng)建serversocketserversocket創(chuàng)建serversocketserversocket發(fā)局限于應(yīng)用中,JDK1.4以前的唯一選擇,但程序直觀簡單易理解。使用線程池機(jī)制改善后的BIO模型圖如下:NIONIO本身是基于驅(qū)動思想來完成的,其主要想解決的是BIO的大并發(fā)問題,NIO基于Reactor,當(dāng)socket有流可讀或可寫入socket時,操作系統(tǒng)會相應(yīng)程序進(jìn)行處NIO的處理方式中,當(dāng)一個請求來的話,開啟線程進(jìn)行處理,可能會等待后端應(yīng)用的 到多路復(fù)用器上,多路復(fù)用器輪詢到連接有I/O請求時才啟動一個線程進(jìn)行處理。限于應(yīng)用中,編程復(fù)雜,JDK1.4開始支持。 AIO方法均為異步的,對于讀操作而言,當(dāng)有流可時,操作系統(tǒng)會將可讀的流傳入read方write方法傳遞的流寫入完畢時,操作系統(tǒng)主動通知應(yīng)用程序。即可以理解為,read/write方法都是異步的,完成后會JDK1.7NIO.2java.nio.channels包下用OS參與并發(fā)操作,編程比較復(fù)雜,JDK71:啟動,端6:數(shù)據(jù)交互7:5:accept6:數(shù)據(jù)交互7:5:accept繼續(xù)阻塞,參數(shù)Server對象和handler3:二、簡Netty是由JBOSS提供的一個java開源框架。Netty提供異步的、驅(qū)動的網(wǎng)絡(luò)應(yīng)用快速和簡單的開發(fā)出一個網(wǎng)絡(luò)應(yīng)用,例如實(shí)現(xiàn)了某種協(xié)議的客戶,服務(wù)端應(yīng)用。Netty相當(dāng)簡化和流線化了網(wǎng)絡(luò)應(yīng)用的編程開發(fā)過程,例如,TCP和UDP的socket服務(wù)開發(fā)?!翱焖佟焙汀昂唵巍辈⒉挥卯a(chǎn)生性或性能上的問題。Netty是一個吸收了多種協(xié)議的實(shí)FTP,SMTP,HTTP,各種二進(jìn)制,文本協(xié)議,并經(jīng)過相當(dāng)精心設(shè)計(jì)的項(xiàng)目,最終,Netty成功的找到了式,在保證易于開發(fā)的同時還保證了其應(yīng)用的性能,阻塞和非阻塞;簡單但更強(qiáng)大的線程模型;在性能上:比JavaAPI更好的吞吐量,較低的延時;資源消耗更少,這個得益于在NIO在高速網(wǎng)絡(luò)中的應(yīng)用中的的讀/寫比SSLTLS和StartTLSRPCNettyNetty(Netty線程模組的時候,構(gòu)造參數(shù)為1,這種開發(fā)方式,就是一個單線程模型。的acceptor線程組,線程數(shù)為1,也就是構(gòu)造參數(shù)為1。負(fù)責(zé)處理客戶端任務(wù)的線程組,線程數(shù)大于1,也就是構(gòu)造參數(shù)大于1。這種開發(fā)方式,就是多線程模型。線程數(shù)大于1,也就是構(gòu)造參數(shù)大于1。這種開發(fā)方式,就是主從多線程模型?;A(chǔ)程序演4.1案nettytcp/iptcp/ip協(xié)議是類似水流一樣的數(shù)據(jù)傳輸方式。多次務(wù)器寫出的數(shù)據(jù)不足10,則使用空白字符補(bǔ)足(如:使用空格。#$_$協(xié) 定時斷線重120秒自動斷線。數(shù)據(jù)變2write12write13write4close3write4close5conne

溫馨提示

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

最新文檔

評論

0/150

提交評論