java 網絡編程 篇一(bio 模型)
最近有一個webSocket 平臺開發的任務,在過程中須使用netty,把學習的過程記錄一下,過程為 bio - nio - netty。
bio 同步阻塞io,阻塞 主要是針對網絡io 也就是socket io。其對應模型如下圖:
一個客戶端連接對應一個線程,在如下代碼處存在線程阻塞客戶端在沒有發消息時服務器變一直阻塞在read 方法處(在一個線程對應一個連接時阻塞當前線程)
Socket acceptSocket = serverSocket.accept(); //阻塞方法
System.out.println(acceptSocket.toString()+" 客戶端已連接 ");
//獲取輸入流并取得用戶信息
InputStream in = acceptSocket.getInputStream();
InputStreamReader reader = new InputStreamReader(in, "UTF-8");
BufferedReader bf = new BufferedReader(reader);
bf.read(); //阻塞方法
bio 網絡模型在并發量要求不高的系統時,該模型沒有問題,編程模型較為簡單,代碼易于理解。 當在并發量要求高的系統時,一個連接對應一個線程,線程資源創建過多,較為浪費。不管當前連接是否活躍(即 客戶端是否有和服務端通訊),造成服務器資源較大浪費。接下來就需要我們的nio 了
智能推薦
Java網絡編程篇
1. IP地址對象:InetAddress單例模式 如圖所示 代碼可復制 2.UDP對象:DatagramSocket DatagramSocket接收信息通過包package的形式,可以在包package中設置發送地址和端口,以及發送的內容信息 接收與發送端都通過DatagramSocket 發送端: 接收端 3.TCP對象:Socket Socket(客戶端)與ServerSocket(服務器...
20180815_20_網絡模型與Java中的網絡編程的一些介紹
網絡模型 七層模式:應用層,表示層,會話層,傳輸層,網絡層,鏈路層,物理層 五層模式:應用層,傳輸層,網絡層,鏈路層,物理層 四層模式:應用層,傳輸層,網絡層,鏈路層 應用層: http:超文本傳輸協議 ftp:文件傳輸協議 stmp:郵件發送協議 pop3:郵件接收協議 ssh:安全shell,用于遠程登陸 傳輸層: tcp:安全可靠的協議 udp:不可靠的協議 網絡...
Java網絡編程 -- BIO 阻塞式網絡編程
阻塞IO的含義 阻塞(blocking)IO :阻塞是指結果返回之前,線程會被掛起,函數只有在得到結果之后(或超時)才會返回 非阻塞(non-blocking)IO :非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函數不會阻塞當前線程,而會立刻返回 同步(synchronous)IO :應用阻塞在發送或接受數據的狀態,直至數據成功傳輸(或返回失敗),簡單來說就是必須一件一件事做,等前一件做...
Java 網絡編程----回顧傳統網絡編程BIO
一.介紹 1.1 網絡編程的基本模型是Client/Server模型,也就是兩個進程直接進行相互通信,其中服務端提供配置信息(綁定的IP地址和監聽端口),客戶端通過連接操作向服務端監聽的地址發起連接請求,通過三次握手建立連接,如果連接成功,則雙方即可以進行通信(網絡套接字Socket).模型如下圖所示 &n...
Java網絡編程 -- BIO 阻塞式網絡編程
阻塞IO的含義 阻塞(blocking)IO :阻塞是指結果返回之前,線程會被掛起,函數只有在得到結果之后(或超時)才會返回 非阻塞(non-blocking)IO :非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函數不會阻塞當前線程,而會立刻返回 同步(synchronous)IO :應用阻塞在發送或接受數據的狀態,直至數據成功傳輸(或返回失敗),簡單來說就是必須一件一件事做,等前一件做...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...