




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家千鋒教學部源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家了解網(wǎng)絡協(xié)議的基本內(nèi)容掌握Socket編程的基本內(nèi)容掌握Socket編程中多線程的處理方式源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家什么是計算機網(wǎng)絡: 把分布在不同地理區(qū)域的計算機與專門的外部設備用通信線路互連成一個規(guī)模大、功能強的網(wǎng)絡系統(tǒng),從而使眾多的計算機可以方便地互相傳遞信息,共享硬件、軟件、數(shù)據(jù)信息等資源。3源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家網(wǎng)絡通信協(xié)議 要使計算機連成的網(wǎng)絡能夠互通信息,需要對數(shù)據(jù)傳輸速率、傳輸代碼、代碼結(jié)構、傳輸控制步驟、出錯控制等制定一組標準,這一組共同遵
2、守的通信標準就是網(wǎng)絡通信協(xié)議,不同的計算機之間必須使用相同的通訊協(xié)議才能進行通信。 在Internet中TCP/IP協(xié)議是使用最為廣泛的通訊協(xié)議。TCP/IP是英文Transmission Control Protocol/Internet Protocol的縮寫,意思是“傳輸控制協(xié)議/網(wǎng)際協(xié)議”。4源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家TCP/IP 4TCP/IP 4層層/5/5層層/7/7層模型層模型源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家TCP/IP協(xié)議: Internet上不同系統(tǒng)之間互聯(lián)的一組協(xié)議 為分散和不同類型的硬件提供通用的編程接口。 TCP/IP 協(xié)議使Intern
3、et盡可能成為一個分散、無序的網(wǎng)絡。 TCP是基于(面向)連接的協(xié)議,也就是說,在正式收發(fā)數(shù)據(jù)前,必須和對方建立可靠的連接。 TCP協(xié)議建立連接需要三次會話(握手) A-B B-A A-B源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家IP地址:網(wǎng)絡中每臺計算機的一個標識號 是一個邏輯地址 127.0.0.1 代表本機地址端口號:具有網(wǎng)絡功能的應用軟件的標識號 端口是一個軟件結(jié)構,被客戶程序或服務程序用來發(fā)送和接收數(shù)據(jù),一臺服務器有256*256個端口。 0-1023是公認端口號,即已經(jīng)公認定義或為將要公認定義的軟件保留的 1024-65535是并沒有公共定義的端口號,用戶可以自己定義這些端口的作
4、用。 端口與協(xié)議有關:TCP和UDP的端口互不相干7源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家IP地址使用32位長度二進制數(shù)據(jù)表示,一般在實際中看到的大部分IP地址都是以十進制的數(shù)據(jù)形式表示的,如:192.168.1.3。IP地址分類: IP地址分為5類,A類保留給政府機構,B類分配給中等規(guī)模的公司,C類分配給任何需要的人,D類用于組播,E類用于實驗,各類可容納的地址數(shù)據(jù)不同。在實際中可以使用127.0.0.1表示本機,或者直接使用localhost代表本機。8NO.NO.地址分類地址分類地址范圍地址范圍1A類地址1.0.0.1126.255.255.2542B類地址128.0.0.1191
5、.255.255.2543C類地址192.0.0.1223.255.255.2544D類地址224.0.0.1239.255.255.2545E類地址240.0.0.1255.255.255.254源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家.InetA.InetAddress此類表示互聯(lián)網(wǎng)協(xié)議 (IP) 地址。 static InetAddress getLocalHost()返回本地主機static InetAddress getByName(String host) 在給定主機名的情況下確定主機(可以用ip地址或主機名表示)的 IP 地址String getHostAddress() 返
6、回 IP 地址字符串(以文本表現(xiàn)形式)是一個對象方法.源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家InetAddressInetAddressimport .InetAddress;import .UnknownHostException;public class DemoInerAddress public static void main(String args) try InetAddress ia1 = InetAddress.getLocalHost();System.out.println(本地地址: + ia1.getHostAddress();InetAddress ia2 =
7、 InetAddress.getByName ();System.out.println(- + ia2.getHostAddress(); catch (UnknownHostException e) e.printStackTrace();源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家兩個應用程序可以通過一個雙向的網(wǎng)絡通信連接實現(xiàn)數(shù)據(jù)交換,這個雙向鏈路的一端稱為一個SocketSocket可以看成在兩個程序進行通訊連接中的一個端點,一個程序?qū)⒁欢涡畔懭隨ocket中,該Socket將這段信息發(fā)送給另外一個Socket中,使這段信息能傳送到其他程序中。Socket通常用來實現(xiàn)client-s
8、erver連接,建立連接時所需的尋址信息為遠程計算機的IP地址和端口號(Port Number)11源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家創(chuàng)建socket;打開連接到socket的輸入/輸出流;按照一定的協(xié)議對socket進行讀/寫操作;關閉socket;注意,要在流全部使用完之后再關閉socket.12源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家13源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家包中定義了兩個類:Socket和ServerSocket,分別用來實現(xiàn)TCP的client和server端。14ServerServerSocket (port#)s.accept() / 等待連
9、接等待連接SocketOutputStreamInputStreamsocket.close()ClientSocket (host, port#)(嘗試連接)(嘗試連接)OutputStreamInputStreamsocket.close()源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家SocketSocketInetAddress getInetAddressgetInetAddress() 返回此套接字連接到的遠程 IP 地址;InetAddress getLocalAddressgetLocalAddress() 獲取套接字綁定的本地地址。 int getPortgetPort() 返
10、回此套接字連接到的遠程端口。int getLocalPortgetLocalPort() 返回此套接字綁定到的本地端口。InputStream getInputStreamgetInputStream() 返回此套接字的輸入流。 OutputStream getOutputStreamgetOutputStream() 返回此套接字的輸出流。boolean isClosed() 返回此套接字是否已經(jīng)關閉源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家public class TCPServer /TCP Server public static void main(String args) try
11、 ServerSocket s = new ServerSocket(8888); / while (true) /循環(huán)接收新客戶端連接 Socket s1 = s.accept();/如果沒有客戶端連接,則會阻塞 BufferedWriter bw = new BufferedWriter( new OutputStreamWriter(s1.getOutputStream(); bw.write(你好, +s1.getInetAddress()+ : + s1.getPort(); bw.newLine();/ bw.flush(); bw.close(); s1.close(); / c
12、atch (IOException e) e.printStackTrace(); System.out.println(程序運行出錯: + e); TCPServer.java16源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家public class TCPClient /TCP Client public static void main(String args) try Socket s = new Socket(127.0.0.1, 8888); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInput
13、Stream(); String str = br.readLine(); System.out.println(服務器說: + str); s.close(); catch (UnknownHostException e) System.err.println(服務器連接失?。?; e.printStackTrace(); catch (IOException e) e.printStackTrace(); TCPClient.java17源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家SocketSocket編程常見問題編程常見問題多個控制臺如何切換?.BindException: Addre
14、ss already in use: JVM_Bind原因:服務器啟動多個在綁定同一個端口客戶端和服務器不在同一個電腦上時,如何連接?客戶端需要指定要連接的服務器的ip和端口號源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家SocketSocket編程常見問題編程常見問題.SocketException: Socket closed原因:關閉了某個基于Socket的流導致Socket被自動關閉,其他關聯(lián)在Socket上的流也會被自動關閉掉.ConnectException: Connection refused: connect原因:無法連接到服務器,有可能服務器未開啟或者端口號不對源自清華 值得
15、信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家C/SC/S結(jié)構中結(jié)構中 流的搭建順序原則流的搭建順序原則交替搭建服務器先建輸入流,后建輸出流,客戶端就先建輸出流,再建輸入流;服務器先建輸出流,后建輸入流,客戶端就先建輸入流,再建輸出流;源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家SocketSocket通信通信實現(xiàn)方式一:OutputStream:write()InputStream:read()實現(xiàn)方式二:BufferedWriter:write(),注意newLine(),flush()PrintWriter:println()BufferedReader:readLine()實現(xiàn)方式三:ObjectIn
16、putStream:readObject()ObjectOutputStream:writeObject()源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家練習練習:C-S:C-S交替聊天程序交替聊天程序注意:1Server:1Client聊天,不用循環(huán)accept()接收新的客戶端進來.流不用循環(huán)搭建.流也不要循環(huán)關閉.該flush()的時候別忘記.Server執(zhí)行順序:1.從客戶端讀2.讀鍵盤輸入,如果輸入exit,退出程序,退出之前,先向?qū)Ψ綄懗鰁xit3.向客戶端寫Client執(zhí)行順序:1.讀鍵盤輸入,如果輸入exit,退出程序,退出之前,先向?qū)Ψ綄懗鰁xit2.向服務器寫3.從服務器讀源
17、自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家練習練習: :1.實現(xiàn)服務器與客戶端1對1的隨意順序的聊天發(fā)送線程ServerSend接收線程ServerReceive場景類Server發(fā)送線程ClientSend接收線程ClientReceive場景類Client提示:可通過線程類的構造方法傳入Socket對象或IO流對象.源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家練習練習: :客戶端向服務器上傳文件客戶端向服務器上傳文件ClientFile:告訴服務器文件的大小ObjectOutputStream:writeLong()讀指定文件FileInputSream:read(),向服務器寫數(shù)據(jù)Out
18、putStream:write()從服務器讀一個a表示傳輸成功向服務器寫字符串傳輸完成:oos.writeUTF(String)ServerFile:從客戶端獲知文件大小ObjectInputStream:readLong(),讀客戶端發(fā)過來的文件數(shù)據(jù),并寫出到特定的本地文件中向客戶端寫出一個a表示傳輸成功接收客戶端發(fā)來的字符串并顯示:ois.readUTF()請參考下頁.源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家網(wǎng)絡數(shù)據(jù)傳輸注意事項網(wǎng)絡數(shù)據(jù)傳輸注意事項服務器讀取網(wǎng)絡上的遠程數(shù)據(jù)時不應該以讀到-1(或readLine得到null)作為結(jié)束,應該用先前客戶端告知的文件大小與累計接收到的數(shù)據(jù)大小
19、比較來判斷循環(huán)是否應該結(jié)束.客戶端關閉流會讓服務器讀到-1,如果客戶端在上傳完文件后還要給服務器發(fā)其他信息,服務器就不能結(jié)束循環(huán)了,直到客戶端close掉輸出流關閉任何關聯(lián)到Socket上的流,都會將Socket自動關閉掉;關閉Socket將會自動關閉關聯(lián)在上面的流.關閉高級流會遞歸的關閉它包裝的低級流.源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家練習練習上題中讓客戶端在控制臺輸入文件的完整路徑上傳到服務器,例如d:/0404/1.txt服務器保存到d:/target目錄下,文件名與客戶端上傳時的文件名相同,例如1.txt源自清華 值得信賴中國移動互聯(lián)網(wǎng)研發(fā)培訓專家服務器端多線程向多客戶端寫文件服務器端多線程向多客戶端寫文件ServerFile(場景類)等待新連接的客戶端,啟動線程向客戶端寫出指定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)上市居間合同范本
- 2025年沈陽貨運資格證考試中心
- 農(nóng)資貨物銷售合同范本
- 出售桌球桌子合同范本
- 全手機購銷合同范本
- 勞動解約合同范本
- 劃線施工合同范例
- 《第一單元 參考活動1 唱響團歌》教學設計 -2023-2024學年初中綜合實踐活動蘇少版八年級上冊
- 內(nèi)墻翻新粉刷合同范本
- 3人合伙養(yǎng)殖合同范本
- 一年級下冊口算題卡大全(50套直接打印版)
- 一年級下冊寫字表練字帖
- 2024PowerTitan系列運維指導儲能系統(tǒng)運維指導
- 2024年成都溫江興蓉西城市運營集團有限公司招聘筆試沖刺題(帶答案解析)
- 申請勞動仲裁申請書8篇
- 2024年互聯(lián)網(wǎng)行業(yè)人才發(fā)展趨勢報告-獵聘大數(shù)據(jù)研究院-202405
- 成品出貨檢驗培訓課件
- 審計報告中無所有者權益變動表書面聲明
- 5人小品《聚寶盆銀行》臺詞
- SJG 148-2024 橋梁結(jié)構健康監(jiān)測技術標準
- 《計算機網(wǎng)絡(第8版)》 課件 第5、6章 運輸層、應用層
評論
0/150
提交評論