




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第16章網絡程序設計Java成功應用的一個重要領域是網絡。為了讓Java程序員能夠方便地進行網絡程序設計,SUN公司在JDK中加入了大量和網絡相關的類,將多種Internet協(xié)議封裝在這些類中。相比其它的編程語言,利用Java編寫網絡程序更為容易。Page
3構建網絡是為了實現(xiàn)通信,不同計算機之間通信必須基于一定的標準。網絡協(xié)議就是計算機通信雙方在通信時必須遵循的一組規(guī)范。
16.1與網絡相關的常用術語
TCP/IP協(xié)議(TransmissionControlProtocol/InternetProtocol)叫做傳輸控制/網際協(xié)議,又叫網絡通訊協(xié)議。Page
4在因特網上,每一臺主機都有一個惟一的IP地址,以區(qū)別網絡上的其它計算機。該地址由一個叫“IANA”(InternetAssignedNumbersAuthority,互聯(lián)網網絡號分配機構)的組織來管理。
16.1與網絡相關的常用術語
IP地址是一種層次型地址,由網絡號和主機號組成,如圖16.1所示。圖16.1IP地址的構成點分十進制記法IPv4IPv6Page
5由于IP地址是數字標識,使用時難以記憶和書寫,因此在IP地址的基礎上又發(fā)展出一種符號化的地址方案,來代替數字型的IP地址。
16.1與網絡相關的常用術語
每一個符號化的地址都與特定的IP地址對應,這樣網絡上的資源訪問起來就容易得多了。這個與網絡上的數字型IP地址相對應的字符型地址,就被稱為域名。Page
6由于IP地址是數字標識,使用時難以記憶和書寫,因此在IP地址的基礎上又發(fā)展出一種符號化的地址方案,來代替數字型的IP地址。
16.1與網絡相關的常用術語
每一個符號化的地址都與特定的IP地址對應,這樣網絡上的資源訪問起來就容易得多了。這個與網絡上的數字型IP地址相對應的字符型地址,就被稱為域名。域名不能直接被網絡設備所識別,需要由域名服務器(DNS)轉換成為IP地址才能訪問。Page
7從廣義上講,服務器是指網絡中能對其它機器提供某些服務的計算機系統(tǒng)(如果一個PC對外提供ftp服務,也可以叫服務器)。
16.1與網絡相關的常用術語
從狹義上講,服務器是專指某些高性能計算機,能通過網絡,對外提供服務。站在Java程序員的角度來看,一臺服務器必須要偵聽其它機器建立連接的請求,并做出應答。Page
8與服務器相對應,在網絡上請求服務的機器就被稱為客戶機。
16.1與網絡相關的常用術語
通常,它會試著與一臺服務器建立連接,一旦連接好,就變成了一種雙向通信。無論對于客戶機還是服務器,連接就成了一個I/O數據流對象,這時可以如同普通文件那樣對待兩臺連接上的計算機。Page
9套接字(Socket)是TCP/IP中的基本概念,它負責將TCP/IP包發(fā)送到指定的IP地址。
16.1與網絡相關的常用術語
可以看成是在兩個程序進行通信連接中的一個端點,一個程序將信息寫入Socket中(類似于插座),該Socket將這段信息發(fā)送到到另一個Socket中(類似于插頭),使這段信息能夠傳送到其它程序。這兩端的程序可以是在一臺計算機上,也可以在因特網的遠程計算機上。Page
10計算機“端口”是英文port的意譯,可以認為是計算機與外界通訊交流的出口。
16.1與網絡相關的常用術語
兩臺計算機通信時,需要通過指定的端口傳遞信息。通常,每個服務都同一個特定的端口編號關聯(lián)在一起。客戶程序必須事先知道所需服務的端口號。硬件領域的端口和軟件領域的端口端口號可以是0-65535之間的任意一個整數。Page
1116.1.8URLURL(UniformResoureLocator:統(tǒng)一資源定位器)表示因特網上某一資源的地址
16.1與網絡相關的常用術語
從左到右由下述部分組成:Internet資源類型(scheme):指出WWW客戶程序用來操作的工具。如“http://”表示WWW服務器,“ftp://”表示FTP服務器,“gopher://”表示Gopher服務器。服務器地址(host):指出WWW頁所在的服務器域名。端口(port):對某些資源的訪問來說,需給出相應的服務器提供端口號。路徑(path):指明服務器上某資源的位置(其格式與unix系統(tǒng)中的格式一樣,通常由“目錄/子目錄/文件名”這樣結構組成)。路徑并非總是必要的。例如:80/domain/index.htm就是一個典型的URL地址,而則是一個簡化的URL地址。Page
12InetAddress類是IP地址封裝類,同時它也是一個比較奇怪的類——沒有公共的構造方法,程序員只能利用該類的一些靜態(tài)方法來獲取對象實例,然后再通過這些對象實例來對IP地址或主機名進行處理。
16.2InetAddress類使用示例
該類常用的一些方法有:pulicstaticInetAddressgetByName(Stringhostname):根據給定的主機名創(chuàng)建一個InetAddress對象,可用來查找該主機的IP地址。publicstaticInetAddressgetByAddress(byte[]addr):根據給定的IP地址創(chuàng)建一個InetAddress對象,可用來查找該IP對應的主機名。publicStringgetHostAddress():獲取IP地址。publicStringgetHostName():獲取主機名。Page
13
16.2InetAddress類使用示例
編制一個小程序,該程序的功能是:獲取用戶通過命令行方式指定的域名,然后通過InetAddress對象來獲取該域名對應的IP地址。當然,程序運行時,需要計算機正常連接到Internet上。【例16.1】根據域名查找IP地址//文件名GetIP.java,程序編號16.1import.*;publicclassGetIP{publicstaticvoidmain(String[]args){try{InetAddressad=InetAddress.getByName(args[0]);//用getHostAddress()方法獲取指定對象的IP地址System.out.println("IP地址為:"+ad.getHostAddress());}catch(UnknownHostExceptionel){el.printStackTrace();}}}Page
15
16.2InetAddress類使用示例
程序中的InetAddress.getByName()方法返回一個InetAddress對象,它其中的參數可以是IP地址或是域名。這里用args[0]作為參數,要求用戶在運行時,輸入一個域名作為參數(關于命令行參數,請回顧3.8節(jié)),比如想獲取網易的IP地址,就應該這樣輸入:javaGetIP當網絡有故障時,該方法會拋出UnknowHostException異常,需要程序員捕獲。如果需要獲取本機IP地址,則要使用靜態(tài)的getLocalHost()方法【例16.2】獲取本機IP地址Page
16
16.2InetAddress類使用示例
//文件名GetMyIP.java,程序編號16.2import.*;publicclassGetMyIP{publicstaticvoidmain(String[]args){try{System.out.println("本機IP為:"+InetAddress.getLocalHost());}catch(UnknownHostExceptionel){el.printStackTrace();}}}運行時,只要輸入:javaGetMyIP就可以獲取本機的IP地址了Page
17
16.3URL類和URLConnection類的使用
IP地址惟一標識了Internet上的計算機,而URL則標識了這些計算機上的資源。一般情況下,URL是一個包含了傳輸協(xié)議、主機名稱、文件名稱等信息的字符串,程序員處理這樣一個字符串時比較繁瑣。為了方便程序員編程,JDK中提供了URL類,該類的全名是.URL,有了這樣一個類,就可以使用它的各種方法來對URL對象進行處理。Page
18URL有6種構造方法,本例中使用了最常用的絕對路徑構造方法,該方法的原型是:
16.3URL類和URLConnection類的使用
publicURL(Stringspec)throwsMalformedURLException;其中的參數spec是一個完整的URL字符串(必須要包含傳輸協(xié)議),例如:URLracehtml=newURL("http://xys.freedns.us/index.html");注意:該方法會拋出MalformedURLException異常,需要在程序中捕獲。利用URL類和JEditorPane類編寫一個非常簡單的瀏覽器Page
19
16.3URL類和URLConnection類的使用
要顯示網頁的內容,需要用到javax.swing包中的JEditorPane類。圖16.2就是利用這兩個類編制的程序界面。圖16.2一個簡單的瀏覽器這個程序的交互界面只有兩個主要控件:一個JTextField和一個JEditorPane。程序代碼如下Page
20這個程序中,由于JEditorPane功能比較弱,無法執(zhí)行網頁中JavaScript/VBScript等腳本語言,更無法執(zhí)行ActiveX控件,所以只能用于一些靜態(tài)網頁的顯示。點此查看源代碼MyBrowser.javaPage
21URLConnection類提供了以下方法返回輸入/輸出流,通過它們可以與遠程對象進行通信:上面的例子中,利用URL配合JEditorPane類可以顯示網頁。但對于某些文件,例如.rar文件,并不需要顯示出來,而是要下載它到本地機器上,這時就不能再使用JEditorPane類的setPage方法,而需要使用URLConnection類。publicInputStreamgetInputStream():從打開的連接中返回一個輸入流,以便讀入數據publicOutputStreamgetOutputStream():從打開的連接中返回一個輸出流,以便寫出數據Page
22
16.3URL類和URLConnection類的使用
【例16.4】文件下載示例(DownFile.java)這個程序主要是為了演示URLConnection的使用,所以寫的很簡單,使用者無法選擇要保存的文件名,讀者可以將它改寫得更為實用一點。Page
23
16.4Socket的使用
Socket是TCP/IP中的基本概念,它負責將TCP/IP包發(fā)送到指定的IP地址。當兩個程序需要通信時,可以使用Socket類建立套接字連接呼叫的一方稱為客戶機,負責監(jiān)聽的一方稱為服務器服務器所用的套接字是ServerSocket,客戶機所用的套接字是Socket。注意:客戶機和服務器必須使用同一個指定的端口號。一個典型的客戶機/服務器對話過程如下:(1)服務器監(jiān)聽指定端口的輸入;(2)客戶機發(fā)出一個請求;(3)服務器接收到這個請求;(4)服務器處理這個請求,并把結果返回給客戶機;(5)客戶機接收結果,做出相應處理。Page
24Java中提供了Socket類供程序員來創(chuàng)建對象,建立套接字。表16.1Scocket中的常用方法Page
25
16.4Socket的使用
Socket類沒有定義數據的輸入和輸出方法在使用Socket對象時,必須使用getInputStream()方法獲得輸入流,然后用這個輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出售機械工廠合同范本
- 2025河南省建筑安全員-C證考試(專職安全員)題庫附答案
- 2025年黑龍江省安全員C證考試題庫
- 化糞池銷售合同范本
- 辦公維修合同范例
- 三年級口算題目全集1000道
- 二年級口算題庫100道
- 個人向個人合同范本
- 農村收購廠房合同范例
- 醫(yī)院門店出租合同范本
- 借哪吒精神燃開學斗志 開學主題班會課件
- 云南藝術學院
- 民間非營利組織會計報表模板
- 2020華夏醫(yī)學科技獎知情同意報獎證明
- 合伙辦廠協(xié)議書范本(通用5篇)
- 水輪機結構介紹匯總
- 素描石膏幾何體
- ISO_15442(隨車起重機安全要求)
- 過橋資金(新)
- 顱內壓監(jiān)測的方法與護理ppt課件
- 房地產項目盈虧平衡分析
評論
0/150
提交評論