![課件第10章java網(wǎng)絡(luò)編程_第1頁](http://file4.renrendoc.com/view/9a3358e30e94c988ded92ebfc6fe2a2d/9a3358e30e94c988ded92ebfc6fe2a2d1.gif)
![課件第10章java網(wǎng)絡(luò)編程_第2頁](http://file4.renrendoc.com/view/9a3358e30e94c988ded92ebfc6fe2a2d/9a3358e30e94c988ded92ebfc6fe2a2d2.gif)
![課件第10章java網(wǎng)絡(luò)編程_第3頁](http://file4.renrendoc.com/view/9a3358e30e94c988ded92ebfc6fe2a2d/9a3358e30e94c988ded92ebfc6fe2a2d3.gif)
![課件第10章java網(wǎng)絡(luò)編程_第4頁](http://file4.renrendoc.com/view/9a3358e30e94c988ded92ebfc6fe2a2d/9a3358e30e94c988ded92ebfc6fe2a2d4.gif)
![課件第10章java網(wǎng)絡(luò)編程_第5頁](http://file4.renrendoc.com/view/9a3358e30e94c988ded92ebfc6fe2a2d/9a3358e30e94c988ded92ebfc6fe2a2d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年6月9日11時59分1第十章Java網(wǎng)絡(luò)編程Java語言提供了豐富的網(wǎng)絡(luò)編程類庫,因此它非常適合用于網(wǎng)絡(luò)編程,強大快捷的網(wǎng)絡(luò)編程功能正是Java備受歡迎的主要原因之一。Java的網(wǎng)絡(luò)功能由幾個不同的包實現(xiàn),基本的網(wǎng)絡(luò)功能定義在包中。其中的接口和類可以大致分為三部分:URL、URLConnection和Socket。2Java1、引言10.1
URL的使用3JavaURL(Uniform/Universal
Resource
Locator)統(tǒng)一資源定位符號。通過URL可以訪問Internet上的各種網(wǎng)絡(luò)資源。URL的基本結(jié)構(gòu)由如下5部分組成:<傳輸協(xié)議>://<主機名>:<端口號>/<文件名>#<引用>傳輸協(xié)議(protocol):有HTTP、FTP、File等。默認為
HTTP協(xié)議。主機名(hostname):指定資源所在的主機名。主機名可以是IP地址,也可以是主機的名字或者域名。端口號(port):端口號用來區(qū)分一個計算機中提供的不同服務(wù),如Web服務(wù)、FTP服務(wù)等。每一種服務(wù)都用一個端口號,范圍是0~65535。在URL中,hostname后面的冒號及端口號是可以省略的,HTTP的默認端口號是80。文件名(filename):文件名包括該文件的完整路徑。在HTTP協(xié)議中,有一個默認的文件名是
index.html,因此,與兩者等價。引用(reference):是對資源內(nèi)的某個引用,如。URL類的構(gòu)造方法1、publicURL(Stringspec):使用URL字符串構(gòu)造一個URL對象URL
u1=new
URL("");4JavaURL類的構(gòu)造方法5Java2、public
URL(String
protocol,String
host,String
file):用指定的協(xié)議、主機名、文件路徑及文件名創(chuàng)建一個URL對象;URL
u2=new
URL("http","","/~xyx/doc/manhua.html");3、public
URL(String
protocol,String
host,int
port,Stringfile):用指定的協(xié)議、主機名、端口號、文件路徑及文件名創(chuàng)建一個URL對象。第一個String類型的參數(shù)是協(xié)議的類型,可以是HTTP、FTP等。第二個String類型參數(shù)是主機上的某個文件(可以包括目錄),int類型參數(shù)是指定端口號,最后一個參數(shù)給出文件名或路徑名。URL
u3=new
URL("http","
",80,"/~xyx/doc/manhua.html");URL類中的主要方法方法名功能說明public
String
getProtocol()獲取該URL的協(xié)議名public
String
getHost()獲取該URL的主機名public
int
getPort()獲取該URL的端口號。若無端口,返回-1public
String
getFile()獲取該URL中的文件名public
String
getContent()獲取傳輸協(xié)議public
String
toString()將URL轉(zhuǎn)化為字符串InputStream
openStream()打開該URL的輸入流public
String
getPath()獲取該URL的路徑URLConnectionopenConnection()打開由該URL標識的位置的連接void
set(string
protocol,stringhost,int
prot,string
file,string
ref)設(shè)置該URL的各域的值6Javapublic
static
void
main(String[]
args)
throwsException
{7JavaURL
u=
new
URL("
");InputStream
in=u.openStream();byte[]
b=new
byte[in.available()];in.read(b);
System.out.println(new
String(b));in.close();}}10.2 Socket網(wǎng)絡(luò)編程8Java客戶端可以通過構(gòu)造一個Socket類對象來建立與服務(wù)器的連接。基于Socket的連接可以是流連接,也可以是數(shù)據(jù)報連接。Socket類的常用構(gòu)造方法有如下3種:1、Socket():創(chuàng)建一個套接字對象,該對象不請求任何連接。2、Socket(String
host,int
port)創(chuàng)建一個Socket對象,請求與host指定的服務(wù)器通過port端口建立連接3、Socket(InetAddress,int)創(chuàng)建一個連接指定Internet地址、指定端口的流式Socket類對象端口號代表了特定的務(wù),故必須保證此端口號沒有被其他應(yīng)用程序或服務(wù)占用。端口號的范圍為0~65535,但0~1023為系統(tǒng)保留的端口號,分配給了特定的應(yīng)用協(xié)議,如80
代表HTTP
服務(wù)、21代表FTP服務(wù)。編寫網(wǎng)絡(luò)程序時,應(yīng)使用1024以上的端口。9Java方法名功能說明void
close()關(guān)閉Socket連接InetAddress
getInetAddress()獲取當前連接的遠程主機的Internet地址InputStream
getInputStream()獲取Socket對應(yīng)的輸入流InetAddress
getLocalAddress()獲取本地主機的Internet地址int
getLocalPort()獲取本地連接的端口號OutputStreamgetOutputStream()獲取該Socket的輸出流int
getPort()獲取遠程主機端口號void
shutdownInput()關(guān)閉輸入流void
shutdownOutput()
10關(guān)閉輸出流JavaSocket類的主要方法9、ServerSocket類ServerSocket類用在服務(wù)器端,用來監(jiān)聽所有來自指定端口的連接,并為每個新的連接創(chuàng)建一個Socket對象。之后客戶端便可以與服務(wù)器端開始通信了。11JavaServerSocket
類12JavaServerSocket類的幾個構(gòu)造方法如下:在指定端口上創(chuàng)建1、ServerSocket(intport):一個ServerSocket類對象。2、ServerSocket(int
port,
int
backlog): 在指定端口上創(chuàng)建一個ServerSocket類對象,并進入監(jiān)聽狀態(tài),第二個int類型的參數(shù)backlog是服務(wù)器忙時保持連接請求的等待客戶數(shù)量。3、ServerSocket(int
port,
int
backlog,InetAddress
bindAddr)
使用指定的端口和和要綁定到的服務(wù)器
IP地址創(chuàng)建一個ServerSocket類對象,并進入監(jiān)聽狀態(tài)。ServerSocket類的主要方法方法名功能說明Socket
accept()接收該連接并返回該連接的Socket對象voidclose()關(guān)閉此服務(wù)器的SocketInetAddressgetInetAddress()獲取該服務(wù)器Socket所綁定的地址int
getLocalPort()獲取該服務(wù)器Socket所偵聽的端口號int
getSoTimeout()獲取連接的超時數(shù)voidsetSoTimeout(inttimeout)設(shè)置連接的超時數(shù),參數(shù)表示ServerSocket的accept()方法等待客戶連接的超時時間。如果參數(shù)值為0,表示永遠不會超時,進
入阻塞狀態(tài)這也是它的默認值13Java首先,在服務(wù)器端構(gòu)造一個ServerSocket類,在指定端口上進行監(jiān)聽,這時服務(wù)器的線程處于等待狀態(tài)。然后在用戶端構(gòu)造Socket類,與服務(wù)器上的指定端口進行連接。服務(wù)器監(jiān)聽到連接請求后就可在兩者之間建立連接。連接建立之后,還必須進行輸入、輸出流的連接才能開始進行通信。通信的一般步驟如下:1、服務(wù)器程序創(chuàng)建一個ServerSocket對象,然后調(diào)用accept()方法等待客戶端建立連接;2、客戶端程序創(chuàng)建一個Socket
對象,并請求與服務(wù)器建立連接;3、建立連接后,可以用Socket
類的getInputStream()和getOutputStream()方法獲得讀寫數(shù)據(jù)的輸入/輸出流;4、通信結(jié)束后,雙方調(diào)用Socket
類的close
方法斷開連接。14Java10、實現(xiàn)Socket通信Server
端15JavaClient
端Accept()inputStreamoutputStream創(chuàng)建ServerSocket對象時,需要的只是一個端口號和IP地址。如果服務(wù)器就設(shè)定在本地,則不需要IP地址。調(diào)用accept()方法時,服務(wù)器端進阻塞狀態(tài),等待客戶端的請求,直到有一個客戶啟動并請求連接到相應(yīng)的服務(wù)器端口。在通信時,由Socket對象可以得到與之相關(guān)聯(lián)的一個網(wǎng)絡(luò)輸入流和網(wǎng)絡(luò)輸出流。如果一個進程要通過網(wǎng)絡(luò)向另一個進程發(fā)送數(shù)據(jù),只需要寫入與socket相關(guān)聯(lián)的輸出流。同樣,如果一個進程要讀取另一個進程發(fā)送過來的數(shù)據(jù),則可以從與socket相關(guān)聯(lián)的輸入流中讀取。16Javaimport .*
;import
java.io.*
;public
class
ServerTest{
public
static
void
main(String
args[])throwsException{ //所有異常拋出ServerSocket
server=null;//定義ServerSocket類Socket
client=null;//表示客戶端PrintStream
out=null;//打印流輸出server=new
ServerSocket(2588);
//服務(wù)器在2588端口上監(jiān)聽System.out.println("服務(wù)器運行,等待客戶端連接。");client=server.accept();//得到連接,程序進入到阻塞狀態(tài)17JavaString
str="hello
Java";//表示要輸出的信息
out
=
newPrintStream(client.getOutputStream())
;out.println(str);//向客戶端輸出信息client.close()
;server.close()
;}};18JavaJava19客戶端程序import .*
;import
java.io.*
;public
class
ClientTest{public
static
void
main(String
args[])throwsException Socket
client=null;
//表示客戶端client
=
new
Socket("localhost",2588)
;BufferedReader
buf=null;
//一次性接收完成buf
=
new
BufferedReader(newInputStreamReader(client.getInputStream()))
;String
str
=
buf.readLine()
;System.out.println("服務(wù)器端輸出內(nèi)容:"+str);buf.close()
;client.close()
;}};例:服務(wù)器和客戶端進行回聲通信20Java客戶端從鍵盤輸入的信息發(fā)送給服務(wù)器,服務(wù)器讀取后,前面加上ECHO:又傳送給客戶端。分析:客戶端和服務(wù)器都有數(shù)據(jù)的讀寫,即都要用到Socket的InputStream和OutputStream。同時客戶端要能進行鍵盤輸入。服務(wù)器端程序代碼:ServerReadWrite.java客戶端代碼:ClientReadWrite.java10.3 InetAddress
類21Java在Java中通過InetAddress類表示IP地址,用于實現(xiàn)主機名和IP地址之間的轉(zhuǎn)換。InetAddress類描述了32位或64位的IP地址,并通過它的兩個子類Inet4Address
和
Inet6Address來實現(xiàn)。之前的IP地址,實際上使用四個十進制數(shù)字表示,相當于32位,把這樣的IP地址稱為IPV4。但是隨著網(wǎng)絡(luò)上主機越來越多,發(fā)現(xiàn)IPV4地址不夠使用,所以又進行了改進產(chǎn)生了IPV6(64位)。注意InetAddress類的構(gòu)造方法被私有化了,所以不能通過構(gòu)造方法對其產(chǎn)生實例對象,只能通過其靜態(tài)方法對其產(chǎn)生實例對象。找不到本地機器的地址時,這些方法通常會拋出UnknownHostException異常,所以應(yīng)該在程序中進行異常處理。.InetAddress類的主要方法方法名功能說明static
InetAddress
getLocalHost()獲得本地主機的InetAddress對象static
InetAddressgetByName(String
host)獲得通過主機名host指定的InetAddress對象String
getHostAddress()以帶圓點的字符串形式獲取IP地址String
getHostName()獲取主機名字22Javapublic
static
InetAddress
getLocalHost()該方法返回一個InetAddress對象,這個對象包含了本地機的IP地址。當查找不到本地機的地址時,將會拋出一個
UnknownHostException異常。public
static
InetAddress
getByName
(String
host)該方法返回一個由host指定的InetAddress對象,參數(shù)host可以是一個主機名,也可以是一個IP地址或者一個DNS域名。如果找不到指定的主機的IP地址,那么該方法將拋出一個
UnknownHostException異常。獲得一個InetAddress對象后,就可以使用InetAddress類的
getAddress()方法獲得本機對象的IP地址(存放在字節(jié)數(shù)組中);使用getHostAddress()方法獲得本機對象的IP地址;使用getHostName()方法獲得主機名。23Javapublic
Sring
getHostAddress()該方法將IP地址以網(wǎng)絡(luò)字節(jié)順序的字節(jié)數(shù)組的形式返回。由于IPV4只有4個字節(jié),IPV6有16個字節(jié),如果需要知道數(shù)組的長度,可以用數(shù)組的length字段獲得。public
Sring
getHostName()
getHostName()方法返回一個字符串形式的主機名字。如果被查詢的機器沒有主機名,或者如果使用了
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住房屋租賃合同范例
- 2025年度智慧園區(qū)視頻監(jiān)控系統(tǒng)集成合同
- 農(nóng)田機器維修合同范本
- 業(yè)主物業(yè)合同范本
- 別墅石材裝修合同范本
- 凍庫合同范本
- 交通疏解合同范本
- 業(yè)務(wù)咨詢合同范本
- epc工程總承包合同范例
- 住房包工合同范本
- 物業(yè)管理服務(wù)應(yīng)急響應(yīng)方案
- 風車的原理小班課件
- 物業(yè)保潔員勞動競賽理論知識考試題庫500題(含答案)
- 國家職業(yè)技術(shù)技能標準 4-07-07-01 洗衣師 勞社廳發(fā)20081號
- 六年級數(shù)學競賽試題及答案(六套)
- 七年級下學期數(shù)學開學第一課課件
- 臨床診療指南-口腔醫(yī)學分冊
- 《中國心血管健康與疾病報告2024》要點解讀
- 浙教版八年級下冊科學第一章 電和磁整章思維導(dǎo)圖
- 重慶建設(shè)-花籃拉桿式懸挑腳手架工藝標準(試行)
- 動物疫病傳染病防控培訓制度
評論
0/150
提交評論