首先來回憶一些計算機網絡的知識吧,計算機網絡按照不同的分類方式來劃分,可以分為不同的類型:
*按照網絡規模和范圍可以簡單劃分為:局域網,城域網和廣域網;
*按照網絡的拓撲結構可以分為:星型網絡、總線網絡、環線網絡、樹型網絡、星型環線網絡等;
*按照網絡的傳輸介質來劃分:雙絞線、同軸電纜、管道纖維和實現戒指等。
OSI的7成網絡模型為:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層;物理層和數據鏈路層是數據傳輸的基礎層,通過網絡層連接交換網絡服務數據單元,在系統之間提供可靠的、透明的數據傳送、提供端到端的錯誤回復和流的控制,提供兩個進程間的連接管理功能,處理被傳輸數據的表示問題,完成數據轉換、格式化和文本壓縮、是直接面對用戶的一層,提供OSI用戶服務。
在計算機網絡中曾經學到了很多的協議,如ICMP,UDP, TCP/IP等等協議,具體協議內容可以看看計算機網絡那本書,上面說的很詳細,下面說一下TCP/IP協議:IP協議制保證計算機能發送和接受分組數據,而TCP協議則可以提供一個可靠的、可控制的信息流傳輸服務;TCP/IP協議是Internet盡可能成為一個分散、無序的網絡,TCP/IP最早出現在UNIX系統中,現在幾乎所有的廠商和操作系統都已經支持它了,同時,TCP/IP也是Internet的基礎協議,其通常可以被看成一個4層模型:應用層、傳輸層、網絡層以及鏈路層,可以與OSI的7層網絡協議對比記憶。
在網絡中有幾個十分重要的屬性,即IP地址,子網掩碼和端口號,IP地址,眾所周知,用來在Internet中表示自己的計算機的位置,現在的IPV4是32位的,分為A類地址,B類地址以及C類地址,D、E等等保留的地址,以後IPV6會隨著網卡的增多而被應用進來,因為其支持64位,所以對於以後幾十年甚至幾百年是夠用了;一般來說子網掩碼是相對於IP地址來劃分的:如A類的為255.0.0.0,B類的為:255.255.0.0,C類的為:255.255.255.0;端口號:計算機的端口是計算機與外界交流的出入口,它包括硬件和軟件兩方面的涵義,硬件意義上的端口,有常稱為接口,如某些進程會使用相應的端口,而軟件意義上的端口,一般指網絡中面向連接服務和無連接服務的通信協議端口,是一種抽象的數據結構。
有一個類專門用於代表一個IP地址,InetAddress:
InetAddress在java.net包中,它沒有任何的構造器,可以通過它自身的靜態方法來得到InetAddress類的實例:
package net;
importjava.net.InetAddress;
importjava.net.UnknownHostException;
public classHello {
public static void main(String[] args)throws Exception {
InetAddress ia;
ia = InetAddress.getLocalHost();
System.out.println(ia);
}
}
輸出了本機的IP地址:HXJ8Z1OJ7AS96JT/192.168.1.2
Socket:套接字Socket是指向基於網路的另一個應用成語的通信鏈的引用,應用程序通常通過“套接字”向網絡發出請求或者應答網絡請求,Socket大致位於OSI參考模型的會話層,而會話層負責控制和管理兩台計算機之間的數據流交換。簡而言之,一台計算機和另一台計算機進行對話的socket將會建立一個“連接通道”,我們可以使用這個通道在計算機之間交換數據。
下面介紹兩個與Socket通信有關的類:java.net.ServerSocket/java.net.Socket,這兩個類用於建立一個雙向的通信,ServerSocket用於建立等待來自客戶端訪問的“服務器”,要建立一個Socket通信應用,首先需要建立一個服務器端的應用:
ServerSocket構造器:
ServerSocket():用於建立一個Socket,未綁定端口;
ServerSocket(intport):用指定的端口port來創建一個偵聽Socket;
ServerSocket(intport,int backlog):加上一個用來改變連接隊列長度的參數backlog;
ServerSocket(intport,int backlog,InetAddress localAddr):在機器存在多個IP地址的情況下,允許通過localAddr這個參數來指定偵聽的IP地址
ServerSocket的方法:
Socket accept():用於接受一個客戶機的連接,如果有客戶機連接到ServerSocket所創建的偵聽端口,則返回一個Socket實例,否則,將一直等待。
void close():關閉Socket連接。
而Socket用於表示網絡間的通信,Socket類:
Socket():建立一個沒有連接的Socket;
Socket(InetAddressaddress,int port):建立一個指定主機IP地址address,端口port上的Socket連接;
Socket(String host,intport):建立一個指定主機名稱host,端口port上的Socket連接;
Socket常用方法:
getInputStream():得到一個InputStream流,可以像使用任何其他數據流一樣使用該對象;
getOutputStream():得到一個OutputSream流。
Socket通過getInputStream和getOutputStream來讀寫數據。
接下來請看第2頁精彩內容: http://www.linuxidc.com/Linux/2013-08/88644p2.htm