現在很多做網絡通訊中間代理層的通訊都是使用Java1.4以后推出的NIO進行編寫,現在還有很多開源的框架也是封裝了NIO的書寫細節來幫助大家簡寫異步非阻塞通訊服務。像MySql的代理中間件amoeba-mysql-proxy就是采用NIO的方式處理client端過來的request,之后與Mysql-Server層的通訊也是采用NIO進行命令消息發送的。再看咱們JavaEye首頁介紹的項目xmemcached,其中作者Dennis是其xmemcached的開發人,他也是通過NIO的方式與memcached的Server進行異步通訊的,Dennis的另一個項目yanf4j就是一個NIO框架,xmemcache也是借助這個NIO框架實現的異步非阻塞方式的網絡通訊,Apache的MINA框架都是NIO的封裝再實現。那么我們就來回顧一下以前的處理方式,來看看為什么現在要使用NIO來進行異步非阻塞方式的通訊吧,網上很多文章都是幾句話將NIO和原始的socket通訊的優劣一帶而過,我們這次用一個簡單的下載大文件的網絡服務程序進行說明。使用3種模式來說明,分別是同步單獨線程服務運行模式、傳統阻塞多線程模式、使用NIO異步非阻塞模式。我們設置服務器上有一個1.81GB的電影,格式為RMVB。使用Server進行服務監聽,客戶端請求到Server,建立網絡通訊,進行電影下載。
本發明適用于通信技術領域提供了一種能夠異步高效傳輸大量數據的方法以及一種能夠接受大量TCP連接的服務端通訊通道。本發明針對通道操作過程中發生的各類IO事件都定義了明確的接口,采用事件驅動的方式實現對用戶的實時通知,采用純異步的IO操作方式充分利用底層傳輸的特性。本發明中的服務端通訊通道實現流程如下:1)打開Netty框架定義的TCP服務端口,并接受客戶端的TCP連接;2)將接受的TCP連接虛擬成一個會話TcpSession,并為該會話TcpSession設置各種參數及監聽器,然后將其添加到會話管理器SessionManager中;3)啟動SessionManager超時檢測器,一旦發現某個會話TcpSession超過一段時間未有通訊事件發生或該會話TcpSession已經斷開,則從SessionManager管理器中及時地刪除該會話;4)用戶調用TcpSession的各種讀/寫接口定制自己的操作。本發明采用優化的設計方法,充分地利用了底層通訊的特性,保證了對大量TCP連接高效可靠的使用。可用在電力數據信息采集系統中接受數量極大的負控終端、電能量終端、配變終端等的連接,保證單臺服務器的接入容量,可有效的降低電力數據信息采集系統的建設成本。
Netty的是一個NIO客戶端服務器架構,可以快速,方便的網絡應用協議服務器和客戶端的這種。它大大簡化了開發,比如TCP和UDP套接字服務器開發網絡編程。
Wireshark是網絡包分析工具。網絡包分析工具的主要作用是嘗試捕獲網絡包, 并嘗試顯示包的盡可能詳細的情況。你可以把網絡包分析工具當成是一種用來測量有什么東西從網線上進出的測量工具,就好像使電工用來測量進入電信的電量的電度表一樣。(當然比那個更高級) 過去的此類工具要么是過于昂貴,要么是屬于某人私有,或者是二者兼顧。 Wireshark出現以后,這種現狀得以改變。Wireshark可能算得上是今天能使用的最好的開元網絡分析軟件。
Mina簡介:Apache MINA(Multipurpose Infrastructure for Network Applications)是Apache組織一個較新的項目,它為開發高性能和高可用性的網絡應用程序提供了非常便利的框架。當前發行的MINA版本支持基于JavaNIO技術的TCP/UDP應用程序開發、串口通訊程序(只在最新的預覽版中提供),MINA所支持的功能也在進一步的擴展中。。本文將通過官方網站上的快速入門程序來介紹MINA的基礎架構的同時演示如何使用MINA開發網絡應用程序。
在JAVA程序中,經常需要和FTP打交道,比如向FTP服務器上傳文件、下載文件,本文簡單介紹如何利用jakartacommons中的FTPClient(在commons-net包中)實現上傳下載文件。
使用Apache MINA2開發網絡應用。Apache MINA2是一個開發高性能和高可伸縮性網絡應用程序的網絡應用框架。它提供了一個抽象的事件驅動的異步API,可以使用TCP/IP、UDP/IP、串口和虛擬機內部的管道等傳輸方式。Apache MINA2可以作為開發網絡應用程序的一個良好基礎。本文將介紹Apache MINA2的基本概念和API,包括I/O服務、I/O會話、I/O過濾器和I/O處理器。另外還將介紹如何使用狀態機。本文包含簡單的計算器服務和復雜的聯機游戲兩個示例應用。Apache MINA2是一個開發高性能和高可伸縮性網絡應用程序的網絡應用框架。它提供了一個抽象的事件驅動的異步API,可以使用TCP/IP、UDP/IP、串口和虛擬機內部的管道等傳輸方式。Apache MINA2可以作為開發網絡應用程序的一個良好基礎。下面將首先簡單介紹一下Apache MINA2。
HttpClient不是一個瀏覽器,它是一個客戶端HTTP傳輸類庫。HttpClient作用是傳輸和接收HTTP消息。HttpClient不嘗試緩存內容,執行內嵌HTML頁面中的javascript腳本,嘗試猜測內容類型,重新定義請求/重定向URI位置,其他功能與HTTP傳輸無關。
一、ftp的port和pasv模式的工作方式???FTP使用2個TCP端口,首先是建立一個命令端口(控制端口),然后再產生一個數據端口。國內很多教科書都講ftp使用21命令端口和20數據端口,這個應該是教書更新太慢的原因吧。實際上FTP分為主動模式和被動模式兩種,ftp工作在主動模式使用tcp21和20兩個端口,而工作在被動模式會工作在大于1024隨機端口。
Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。
HttpClient簡介:HTTP協議可能是現在Internet上使用得最多、最重要的協議了,越來越多的Java應用程序需要直接通過HTTP協議來訪問網絡資源。雖然在JDK的java.net包中已經提供了訪問HTTP協議的基本功能,但是對于大部分應用程序來說,JDK庫本身提供的功能還不夠豐富和靈活。HttpClient是Apache Jakarta Common下的子項目,用來提供高效的、最新的、功能豐富的支持HTTP協議的客戶端編程工具包,并且它支持HTTP協議最新的版本和建議。HttpClient已經應用在很多的項目中,比如Apache Jakarta上很著名的另外兩個開源項目Cactus和HTMLUnit都使用了HttpClient。
Netty是一個異步的,事件驅動的網絡編程框架和工具,使用Netty 可以快速開發出可維護的,高性能、高擴展能力的協議服務及其客戶端應用。 <br>也就是說,Netty 是一個基于NIO的客戶,服務器端編程框架,使用Netty 可以確保你快速和簡單的開發出一個網絡應用,例如實現了某種協議的客戶,服務端應用。Netty相當簡化和流線化了網絡應用的編程開發過程,例如,TCP和UDP的socket服務開發。