版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
-1-理解計算機(jī)網(wǎng)絡(luò)編程的概念理解TCP/IP協(xié)議規(guī)范理解UDP協(xié)議規(guī)范理解域名與DNS的概念掌握基于URL的網(wǎng)絡(luò)編程掌握基于TCP的C/S網(wǎng)絡(luò)編程掌握基于Socket的低層次Java網(wǎng)絡(luò)編程掌握基于Socket的多線程通信目標(biāo)-2-網(wǎng)絡(luò)基礎(chǔ)隨著計算機(jī)技術(shù)的的發(fā)展,基于網(wǎng)絡(luò)的應(yīng)用已成為時代發(fā)展的重要標(biāo)志。通過網(wǎng)絡(luò)可以將分布在不同區(qū)域的計算機(jī)、外設(shè)、數(shù)據(jù)資源等用通信線路互聯(lián)成一個規(guī)模大、功能強(qiáng)、資源共享的網(wǎng)絡(luò)系統(tǒng),使眾多的終端可以方便的互相傳遞信息、共享硬件、軟件、數(shù)據(jù)信息等資源。-3-網(wǎng)絡(luò)類型按照網(wǎng)絡(luò)的地理位置可以分為:局域網(wǎng)(LAN):一般限定在較小的區(qū)域內(nèi),小于10km的范圍,通常采用有線的方式連接起來。城域網(wǎng)(MAN):規(guī)模局限在一座城市的范圍內(nèi),10~100km的區(qū)域。廣域網(wǎng)(WAN):網(wǎng)絡(luò)跨越國界、洲界,甚至全球范圍按照服務(wù)方式可以分為:客戶機(jī)/服務(wù)器網(wǎng)絡(luò)(Client/Server):服務(wù)器是指專門提供服務(wù)的高性能計算機(jī)或?qū)S迷O(shè)備,客戶機(jī)是用戶計算機(jī)。對等網(wǎng)(Peer-to-Peer):對等網(wǎng)不要求文件服務(wù)器,每臺客戶機(jī)都可以與其他每臺客戶機(jī)對話,共享彼此的信息資源和硬件資源,組網(wǎng)的計算機(jī)一般類型相同。-4-TCP/IP協(xié)議TCP/IP(TransmissionControlProtocol/InternetProtocol)傳輸控制協(xié)議/互聯(lián)網(wǎng)絡(luò)協(xié)議。TCP/IP是一種網(wǎng)絡(luò)通信協(xié)議,它規(guī)范了網(wǎng)絡(luò)上的所有通信設(shè)備,尤其是一個主機(jī)與另一個主機(jī)之間的數(shù)據(jù)往來格式以及傳送方式。TCP/IP是INTERNET的基礎(chǔ)協(xié)議,也是一種電腦數(shù)據(jù)打包和尋址的標(biāo)準(zhǔn)方法。TCP/IP在INTERNET中幾乎可以無差錯地傳送數(shù)據(jù)。-5-IPIP是互聯(lián)網(wǎng)絡(luò)協(xié)議。IP協(xié)議提供了能適應(yīng)各種各樣網(wǎng)絡(luò)硬件的靈活性,對底層網(wǎng)絡(luò)硬件幾乎沒有任何要求。IP協(xié)議是一個無連接、不可靠的協(xié)議。在傳輸數(shù)據(jù)之前,它不交換控制信息,數(shù)據(jù)包只是傳送到目的主機(jī),并且假設(shè)能被正確的處理。由于IP協(xié)議并不重新傳輸已丟失的數(shù)據(jù)包或監(jiān)測受損害的數(shù)據(jù),所以IP協(xié)議是不可靠的。這種功能可以通過TCP來實現(xiàn)。-6-TCPTCP協(xié)議是一種端對端協(xié)議。TCP協(xié)議為兩臺計算機(jī)之間的建立一個連接、發(fā)送和接收數(shù)據(jù)以及終止連接。TCP協(xié)議利用重發(fā)技術(shù)和擁塞控制機(jī)制,向應(yīng)用程序提供可靠的通信連接,使它能夠自動適應(yīng)網(wǎng)上的各種變化。即使在Internet暫時出現(xiàn)堵塞的情況下,TCP也能夠保證通信的可靠;TCP協(xié)議具有自動調(diào)整“超時值”的功能,能很好地適應(yīng)Internet上各種各樣的變化,確保傳輸數(shù)值的正確。IP協(xié)議只保證計算機(jī)能發(fā)送和接收分組數(shù)據(jù),而TCP協(xié)議則可提供一個可靠的、可流控的、全雙工的信息流傳輸服務(wù)。IP和TCP這兩個協(xié)議的功能不盡相同,功能上互補,兩者的結(jié)合,保證Internet在復(fù)雜的環(huán)境下正常運行。因此在實際中常把這兩個協(xié)議統(tǒng)稱作TCP/IP協(xié)議。-7-UDP協(xié)議UDP協(xié)議的全稱是用戶數(shù)據(jù)包協(xié)議,是一種無連接的協(xié)議。UDP協(xié)議主要作用于不要求分組順序到達(dá)的傳輸中,分組傳輸順序的檢查與排序由應(yīng)用層完成,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。UDP報頭由4個域組成,其中每個域各占2個字節(jié),具體如下:源端口號、目標(biāo)端口號、數(shù)據(jù)報長度、校驗值。UDP協(xié)議應(yīng)用:通常音頻、視頻和普通數(shù)據(jù)在傳送時使用UDP比較多,比如我們聊天用的QQ就是使用UDP協(xié)議。-8-IP地址IP地址是一個32位的二進(jìn)制地址,分為4組,每組8位,由小數(shù)點分開,用四個字節(jié)來表示,每個字節(jié)的數(shù)值范圍是0~255。IP地址按分為三類:A類地址的表示范圍為:~55,默認(rèn)網(wǎng)絡(luò)掩碼為:。B類地址的表示范圍為:~55,默認(rèn)網(wǎng)絡(luò)掩碼為:。C類地址的表示范圍為:~55,默認(rèn)網(wǎng)絡(luò)掩碼為:。
-9-端口端口分為硬件上的接口和軟件上的端口。在軟件上端口其實是邏輯上的信息通道,包括一些數(shù)據(jù)結(jié)構(gòu)和I/O緩沖區(qū)。端口是通過端口號來標(biāo)記的,端口號只有整數(shù),范圍是從0到65535。按端口號的范圍可以分為3大類:公認(rèn)端口:從0到1023,綁定于一些服務(wù)。注冊端口:從1024到49151。松散地綁定于一些服務(wù)。動態(tài)和/或私有端口:從49152到65535。常用的端口及對應(yīng)的服務(wù):端口號服務(wù)7Echo服務(wù)端口21FTP服務(wù)端口23Telnet服務(wù)端口25SMTP服務(wù)端口80HTTP服務(wù)端口-10-域名與DNS域名(DomainName)是由一串用“.”分隔的字符串組成,用于標(biāo)識計算機(jī)的電子方位。域名不僅便于記憶,而且在IP地址發(fā)生變化時,域名仍可保持不變。常用的域名分為:國際域名:也叫國際頂級域名,使用最早也最廣泛的域名。例如表示工商企業(yè)的.com,表示網(wǎng)絡(luò)提供商的.net,表示非盈利組織的.org等。國內(nèi)域名:也叫國內(nèi)頂級域名。即按照國家的不同分配不同后綴,這些域名即為該國的國內(nèi)頂級域名。目前200多個國家和地區(qū)都按照ISO3166國家代碼分配了頂級域名,例如中國是cn,美國是us,日本是jp等。二級域名:指頂級域名之下的域名。在國際頂級域名下,它是指域名注冊人的網(wǎng)上名稱,例如ibm,yahoo,microsoft等;在國家頂級域名下,它是表示注冊企業(yè)類別的符號,例如com,edu,gov,net等。三級域名:一般應(yīng)用于中小企業(yè)及個人注冊使用。DNS(DomainNameServer)是域名解析的服務(wù)器。通過DNS服務(wù)可以將用戶輸入的域名解析為與之相關(guān)IP地址,從而唯一確定該域名所綁定的域?qū)哟谓Y(jié)構(gòu)中的計算機(jī)和網(wǎng)絡(luò)服務(wù)。-11-網(wǎng)絡(luò)APIJava中有關(guān)網(wǎng)絡(luò)方面的功能都定義在包中常用的3個網(wǎng)絡(luò)類:InetAddress類:封裝計算機(jī)的IP地址和域名。URL類:統(tǒng)一資源定位器。URLConnection類:URL指定的數(shù)據(jù)源的動態(tài)連接。-12-InetAddress類InetAddress類用來封裝IP地址和該地址的域名。InetAddress類內(nèi)部隱藏了地址數(shù)字,它不需要用戶了解如何實現(xiàn)地址的細(xì)節(jié)。InetAddress類無構(gòu)造方法,不能直接創(chuàng)建其對象。方法名功能說明publicstaticInetAddressgetLocalHost()獲得本地機(jī)的InetAddress對象,當(dāng)查找不到本地機(jī)器的地址時,拋出一個UnknownHostException異常publicstaticInetAddressgetByName(Stringhost)獲得由host指定的InetAddress對象,host是計算機(jī)的域名(或IP)。如果找不到主機(jī)會拋出UnknownHostException異常publicstaticInetAddress[]getAllByName(Stringhost)獲得具有相同名字的一組InetAddress對象,如果找不到主機(jī)會拋出UnknownHostException異常publicstaticInetAddressgetByAddress(byte[]addr)獲取addr所封裝的IP地址對應(yīng)的InetAddress對象,如果找不到主機(jī)會拋出UnknownHostException異常publicStringgetCanonicalHostName()從域名服務(wù)中獲得標(biāo)準(zhǔn)的主機(jī)名publicbytes[]getHostAddress()獲得主機(jī)IP地址publicStringgetHostName()獲得主機(jī)名publicStringtoString()獲得主機(jī)名和IP地址的字符串-13-URL類-1URL(UniformResourceLocator)統(tǒng)一資源定位器,表示Internet上某一資源的地址。通過URL可以訪問Internet上的各種網(wǎng)絡(luò)資源。URL是最為直觀的一種網(wǎng)絡(luò)定位方法,符合人們的語言習(xí)慣,容易記憶。為了處理方便,Java將URL封裝成URL類,可以通過URL對象記錄下完整的URL信息。一個完整的URL由協(xié)議名、主機(jī)名(主機(jī)IP)、端口號和文件路徑四部分組成:協(xié)議名(protocol):指明獲取資源所使用的傳輸協(xié)議,如http、ftp等,使用冒號(:)來將它與其他部分相隔離。主機(jī)名(host):指定獲取資源的域名,此部分由左邊的雙斜線(//)和右邊的單斜線(/)或可選冒號(:)限制。端口(port):指定服務(wù)的端口號,是可選的參數(shù),由主機(jī)名左邊的冒號(:)和右邊的斜線(/)限制。文件路徑(file):指定訪問的文件名及路徑。示例::8080/index.htm-14-URL類-2方法名功能說明publicURL(Stringspec)構(gòu)造方法,根據(jù)指定的spec來創(chuàng)建一個URL對象publicURL(Stringprotocol,Stringhost,intport,Stringfile)構(gòu)造方法,根據(jù)指定的協(xié)議、主機(jī)名、端口號、文件路徑及文件名創(chuàng)建一個URL對象publicURL(Stringprotocol,Stringhost,Stringfile)構(gòu)造方法,根據(jù)指定的協(xié)議、主機(jī)名、路徑及文件名創(chuàng)建URL對象publicStringgetProtocol()獲取該URL的協(xié)議名publicStringgetHost()獲取該URL的主機(jī)名publicintgetPort()獲取該URL的端口號,如果沒有設(shè)置端口,返回-1publicStringgetFile()獲取該URL的文件名publicStringgetRef()獲取該URL在文件中的相對位置publicStringgetQuery()獲取該URL的查詢信息publicStringgetPath()獲取該URL的路徑publicStringgetRef()獲得該URL的錨-15-URLConnection類URLConnection類:URLConnection是一個抽象類,代表與URL指定的數(shù)據(jù)源的動態(tài)連接,它提供了服務(wù)器交互控制,允許使用POST、PUT或HTTP請求方法將數(shù)據(jù)送回服務(wù)器。URLConnection的方法如下:方法名功能說明publicintgetContentLength()獲得文件的長度publicStringgetContentType()獲得文件的類型publiclonggetDate()獲得文件創(chuàng)建的時間publiclonggetLastModified()獲得文件最后修改的時間publicInputStreamgetInputStream()獲得輸入流,以便讀取文件的數(shù)據(jù)publicOutputStreamgetOutputStream()獲得輸出流,以便輸出數(shù)據(jù)-16-Socket網(wǎng)絡(luò)通信套接字(Socket)允許程序?qū)⒕W(wǎng)絡(luò)連接當(dāng)成一個流,可以向這個流中寫字節(jié),也可以從這個流中讀取字節(jié)。套接字為程序員屏蔽了網(wǎng)絡(luò)的底層細(xì)節(jié),例如媒體類型、信息包的大小、網(wǎng)絡(luò)地址、信息的重發(fā)等。TCP/IP套接字用于在主機(jī)和Internet之間建立可靠的、雙向的、持續(xù)的、點對點的流式連接。一個套接字可以用來建立Java的輸入/輸出系統(tǒng)到其他的駐留在本地機(jī)或Internet上的任何機(jī)器的程序的連接。Java中有兩類TCP套接字:一種是服務(wù)器套接字(ServerSocket);另一種是客戶端套接字(Socket)。ServerSocket類設(shè)計成在等待客戶建立連接之前不做任何事的“監(jiān)聽器”。Socket類為建立連向服務(wù)器套接字以及啟動協(xié)議交換而設(shè)計。利用Socket類的方法,就可以實現(xiàn)兩臺計算機(jī)之間的通信。-17-Socket類Socket是網(wǎng)絡(luò)上運行的兩個程序間雙向通信的一端,它既可以接受請求,也可以發(fā)送請求,利用它可以較為方便地編寫網(wǎng)絡(luò)上數(shù)據(jù)的傳遞。Socket常用方法及功能:方法名功能說明publicSocket(Stringhost,intport)創(chuàng)建一個到主機(jī)host、端口號為port的套接字,并連接到遠(yuǎn)程主機(jī)publicSocket(InetAddresshost,intport)創(chuàng)建一個套接字,使用host中封裝的主機(jī)信息、端口號為port,并連接到主機(jī)publicInetAddressgetInetAddress()返回連接到遠(yuǎn)程主機(jī)的地址,如果連接失敗,則返回以前連接的主機(jī)publicintgetPort()返回Socket連接到遠(yuǎn)程主機(jī)的端口號publicintgetLocalPort()返回本地連接終端的端口號publicInputStreamgetInputStream()返回一個輸入流,利用這個流就可以從套接字讀取數(shù)據(jù)publicOutputStreamgetOutputStream()返回一個輸出流,可以在應(yīng)用程序中寫數(shù)據(jù)到套接字的另一端publicsynchronizedvoidclose()關(guān)閉當(dāng)前Socket連接-18-Socket的工作步驟Socket的工作步驟如下:1.根據(jù)指定地址和端口創(chuàng)建一個Socket對象。2.調(diào)用getInputStream()方法或getOutputStream()方法打開連接到Socket的輸入/出流。3.客戶端與服務(wù)器根據(jù)一定的協(xié)議交互,直到關(guān)閉連接。4.關(guān)閉客戶端的Socket。示例try{ //是TCP/IP協(xié)議中默認(rèn)的本機(jī)地址
Socketsocket=newSocket("",1210);}catch(IOExceptionioe){ System.out.println("Error:"+ioe);}catch(UnknownHostExceptionuhe){ System.out.println("Error:"+uhe);} -19-ServerSocket類服務(wù)器套接字(ServerSocket)運行在服務(wù)器上,并監(jiān)聽在特定端口的TCP連接。ServerSocket類中包含了創(chuàng)建ServerSocket對象的構(gòu)造方法、在指定端口監(jiān)聽的方法、建立連接后發(fā)送和接收數(shù)據(jù)的方法。ServerSocket類的方法:方法名功能說明publicServerSocket(intport)構(gòu)造方法,根據(jù)指定端口創(chuàng)建ServerSocket實例publicSocketaccept()這是一個阻塞方法,它停止執(zhí)行代碼流,并等待下一個客戶端的連接。當(dāng)客戶端請求連接時,accept()方法返回一個Socket對象publicvoidclose()關(guān)閉當(dāng)前ServerSocket實例publicInetAddressgetInetAddress()返回當(dāng)前ServerSocket實例的地址信息publicintgetLocalPort()返回當(dāng)前ServerSocket實例的服務(wù)端口-20-ServerSocket的工作步驟ServerSocket的工作步驟如下:ServerSocketserver=null;try{ //創(chuàng)建一個ServerSocket在端口1210監(jiān)聽客戶請求
server=newServerSocket(1210);}catch(IOExceptione){ System.out.println("cannotlistento:"+e);}Socketsocket=null;try{ socket=server.accept();}catch(IOExceptione){ System.out.println("Error:"+e);} 根據(jù)指定端口創(chuàng)建一個新的ServerSocket對象。調(diào)用ServerSocket的accept()方法,在指定的端口監(jiān)聽到來的連接。accept()一直處于阻塞狀態(tài),直到有客戶端試圖建立連接。這時accept()方法返回連接客戶端與服務(wù)器的Socket對象。調(diào)用getInputStream()方法或getOutputStream()方法建立與客戶端交互的輸入/輸出流。服務(wù)器與客戶端根據(jù)一定的協(xié)議交互,直到關(guān)閉連接。關(guān)閉服務(wù)器端的Socket?;氐降?步,繼續(xù)監(jiān)聽下一次的連接。
-21-C/S實例使用Socket進(jìn)行Client/Server程序設(shè)計的一般過程如下:1.Server端Listen(監(jiān)聽)某個端口是否有連接請求。2.Client端向Server端發(fā)出Connect(連接)請求。3.Server端向Client端發(fā)回Accept(接收)消息并建立連接。4.通過getInputStream()和getOutStream()方法來得到對應(yīng)的輸入/輸出流,Server端和Client端都可以相互讀寫數(shù)據(jù)。5.關(guān)閉Server端和Client端的Socket。
-22-Socket交互編程模型-23-Socket數(shù)據(jù)流傳遞步驟-24-
多線程Socket通信在實際應(yīng)用中,服務(wù)器可以接收來自其他多個客戶端的請求,提供相應(yīng)的服務(wù)。為了實現(xiàn)在服務(wù)器方給多個客戶提供服務(wù)的功能,需要對上面的程序進(jìn)行改造,利用多線程實現(xiàn)多客戶機(jī)制。服務(wù)器總是在指定的端口上監(jiān)聽是否有客戶請求,一旦監(jiān)聽到客戶請求,服務(wù)器就會啟動一個專門的服務(wù)線程來響應(yīng)該客戶的請求,而服務(wù)器本身在啟動完線程之后馬上又進(jìn)入監(jiān)聽狀態(tài),等待下一個客戶的到來。
publicclassServer2extendsThread{……serverSocket=newServerSocket(1210);publicvoidrun(){ //接收一個套接字
Socketsocket=serverSocket.accept(); //創(chuàng)建一個從套接自重讀數(shù)據(jù)的管道,即輸入流,讀客戶的信息
BufferedReaderin=newBufferedReader(newInputStreamReader( socket.getInputStream())); System.out.println(in.readLine()); //創(chuàng)建一個往套接字中寫數(shù)據(jù)的管道,即輸出流,給客戶發(fā)送返回信息
PrintWriterout=newPrintWriter(socket.getOutputStream()); out.println("您好,SERVERSOCKET服務(wù)器已收到,您中大獎了!!!
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 手機(jī)使用協(xié)議書
- 燃?xì)庠畋P迏f(xié)議書
- 苗場訂合同范本
- 苗木起挖協(xié)議書
- 蔬果配送協(xié)議書
- 融資失敗協(xié)議書
- 認(rèn)主協(xié)議書模板
- 認(rèn)購合法協(xié)議書
- 設(shè)備保管協(xié)議書
- 設(shè)備相關(guān)協(xié)議書
- 2025年榆林市住房公積金管理中心招聘(19人)備考筆試試題及答案解析
- 2025年金屬非金屬礦山(地下礦山)安全管理人員證考試題庫含答案
- 2025秋蘇教版(新教材)小學(xué)科學(xué)三年級上冊知識點及期末測試卷及答案
- 2025年及未來5年中國非晶合金變壓器市場深度分析及投資戰(zhàn)略咨詢報告
- 中文核心期刊論文模板(含基本格式和內(nèi)容要求)
- 2024-2025學(xué)年云南省普通高中高二下學(xué)期期末學(xué)業(yè)水平合格性考試數(shù)學(xué)試卷
- GB/T 18213-2025低頻電纜和電線無鍍層和有鍍層銅導(dǎo)體直流電阻計算導(dǎo)則
- 泰康人壽會計筆試題及答案
- 園林綠化養(yǎng)護(hù)項目投標(biāo)書范本
- 烷基化裝置操作工安全培訓(xùn)模擬考核試卷含答案
- 汽車租賃行業(yè)組織架構(gòu)及崗位職責(zé)
評論
0/150
提交評論