




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第14章socket網(wǎng)絡(luò)編程目標(biāo):了解使用URL讀取和顯示網(wǎng)絡(luò)資源。掌握InetAddress類和套接字的概念。掌握使用TCP協(xié)議進(jìn)行通信的方法。了解使用UDP協(xié)議進(jìn)行通信的方法。14.1.1網(wǎng)絡(luò)編程概述網(wǎng)絡(luò)協(xié)議采用分層的基本思想,把復(fù)雜成份分解成一些簡單的成份,再將它們復(fù)合起來。所謂分層,即同層間可以通信,上一層可以調(diào)用下一層,而與再下一層不發(fā)生關(guān)系。各層互不影響,利于系統(tǒng)的開發(fā)和擴(kuò)展。14.1.1網(wǎng)絡(luò)編程概述http、telnet、ftp、smtp、……TCP、UDPIP、ARP…Ethernet、TokenRing、FDDI…14.1.1網(wǎng)絡(luò)編程概述通信主體有兩級:IP地址和端口號。IP地址可定位網(wǎng)絡(luò)上的任意一臺主機(jī)。端口號可定位主機(jī)的進(jìn)程(即應(yīng)用程序)。IP地址IP地址是計算機(jī)網(wǎng)絡(luò)中任意一臺計算機(jī)地址的惟一標(biāo)識。通過這種地址標(biāo)識,網(wǎng)絡(luò)中的計算機(jī)可以互相定位和通信。如主機(jī)名是計算機(jī)網(wǎng)絡(luò)中一臺計算機(jī)的標(biāo)識名。如:puter、等。在Internet上,IP地址和主機(jī)名是一一對應(yīng)的;14.1.1網(wǎng)絡(luò)編程概述端口端口(port)是網(wǎng)絡(luò)通信時標(biāo)識同一主機(jī)上的不同進(jìn)程(即應(yīng)用程序);端口號(portnumber)是端口的數(shù)字編號。共65535個,0-1023系統(tǒng)保留,如http80、telnet21、ftp23、QQ8000或400014.1.1網(wǎng)絡(luò)編程概述TCP協(xié)議TCP(TransferControlProtocol的簡稱)協(xié)議是一種面向連接的、可以提供可靠傳輸?shù)膮f(xié)議。使用TCP協(xié)議傳輸數(shù)據(jù),接收端得到的是一個和發(fā)送端發(fā)出的完全一樣的數(shù)據(jù)流(包括順序)。發(fā)送方和接收方之間的兩個端口必須建立連接。在程序中,端口之間建立連接一般使用的是Socket(套接字)方法。這種通信方式和電信局的電話系統(tǒng)很相似。14.1.1網(wǎng)絡(luò)編程概述UDP協(xié)議UDP(UserDatagramProtocol的簡稱)是一種無連接的協(xié)議,它傳輸?shù)氖且环N獨(dú)立的數(shù)據(jù)報(Datagram)。每個數(shù)據(jù)報都是一個獨(dú)立的信息,包括完整的源地址或目的地址。數(shù)據(jù)報在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此,數(shù)據(jù)報能否到達(dá)目的地、到達(dá)目的地的時間、數(shù)據(jù)的正確性和各個數(shù)據(jù)報到達(dá)的順序都是不能完全保證的。這種通信方式和郵局的信件傳送方式很相似。14.1.1網(wǎng)絡(luò)編程概述Java用于網(wǎng)絡(luò)通信的包是。Java網(wǎng)絡(luò)程序設(shè)計的基本方式主要有三種:使用URL訪問網(wǎng)絡(luò)資源URL、URLConnectionsocket連接通信Socket、ServerSocket數(shù)據(jù)報通信DatagramPacket、DatagramSocket、MulticastSocket14.3.2流式通信協(xié)議流式Scoket通信是一種基于連接的通信,通過Socket和ServerSocket類完成,分別代表客戶端和服務(wù)器端。建立連接時所需的尋址信息為遠(yuǎn)程計算機(jī)的IP地址和端口號。通信過程如圖。
14.3.3SocketSocket類的構(gòu)造方法:Socket()Socket(Stringhost,intport)常用方法:InputStreamgetInputStream()OutputStreamgetOutputStream()close()14.3.4ServerSocketServerSocket的構(gòu)造方法:ServerSocket()ServerSocket(intport)常用方法:Socketaccept()voidclose()14.3.5流式通信示例服務(wù)器端:使用ServerSocket類監(jiān)聽端口,即創(chuàng)建一個ServerSocket對象。使用ServerSocket對象調(diào)用accept()方法等待客戶連接請求??蛻舭l(fā)來請求建立新的Socket對象使用新建的Socket對象建立輸入、輸出流。使用流對象方法完成與客戶端的數(shù)據(jù)傳輸。完成通信,關(guān)閉流。
14.3.5流式通信示例客戶端:使用Socket類的構(gòu)造方法對網(wǎng)絡(luò)上某個服務(wù)器發(fā)出連接請求。連接成功使用Socket的成員方法getInputStream()和getOutputStream()創(chuàng)建輸入、輸出流。使用流對象的相應(yīng)方法讀寫數(shù)據(jù)。通信完畢,關(guān)閉流。例1:服務(wù)器與客戶端創(chuàng)建連接publicclassSocketServer1{ publicSocketServer1(){ try{
ServerSocketss=newServerSocket(8888); System.out.println("連接前");
Sockets=ss.accept(); System.out.println("連接后"); }catch(IOExceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args){ SocketServer1ss=newSocketServer1(); }}例1:服務(wù)器與客戶端創(chuàng)建連接publicclassSocketClient1{ publicSocketClient1(){ try{
Socketss=newSocket("lijie",8888); }catch(IOExceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args){ SocketClient1ss=newSocketClient1(); }}例2:服務(wù)器與客戶端發(fā)送消息publicSocketServer2(){try{ ServerSocketss=newServerSocket(8888); Sockets=ss.accept(); BufferedReaderbr=newBufferedReader(newInputStreamReader(s.getInputStream()));
System.out.println(br.readLine()); PrintWriterpw=newprintWriter(s.getOutputStream(),true);
pw.println("你好,歡迎登錄!");}catch(IOExceptione){ e.printStackTrace(); }}例2:服務(wù)器與客戶端發(fā)送消息publicSocketClient2(){try{ Sockets=newSocket("lijie",8888);
PrintWriterpw=newPrintWriter(newOutputStreamWriter(s.getOutputStream()),true); pw.println("你好,服務(wù)器!");
BufferedReaderbr=newBufferedReader(newInputStreamReader(s.getInputStream()));
System.out.println(br.readLine());}catch(IOExceptione){ e.printStackTrace(); }}例3:帶界面服務(wù)器與客戶端聊天界面類在構(gòu)造方法中創(chuàng)建界面、創(chuàng)建網(wǎng)絡(luò)連接發(fā)送消息功能按鈕事件處理,實(shí)現(xiàn)點(diǎn)擊“發(fā)送”按鈕,發(fā)送消息接收消息功能自動循環(huán)接收14.4.4數(shù)據(jù)報通信協(xié)議數(shù)據(jù)報通信是一種無連接的通信,通過DatagramSocket和DatagramPacket類完成,分別用于通信的Socket和數(shù)據(jù)報文包。DatagramPacket的構(gòu)造方法DatagramPacket(byte[]buf,intlen)DatagramPacket(byte[]buf,intlen,InetAddressaddress,intport)DatagramPacket類的主要方法getData():返回發(fā)送或接受數(shù)據(jù)的緩沖區(qū)
14.4.4數(shù)據(jù)報通信協(xié)議DatagramSocket的構(gòu)造方法DatagramSocket()DatagramPacket(intport)DatagramSocket類的主要方法send(datagramPacket):發(fā)送receive(datagramPacket):接收
14.4.4數(shù)據(jù)報通信協(xié)議客戶端和服務(wù)器端具體編程步驟:1.創(chuàng)建Datagram
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 墻體加固施工方案
- 砌體結(jié)構(gòu)施工方案
- 橋墩基礎(chǔ)施工方案
- 土工布施工方案
- 校園綜合布線施工方案
- 新疆?dāng)r水壩施工方案
- 水下填筑沉箱施工方案
- TSHJX 076-2024 上海市域鐵路客流預(yù)測規(guī)范
- 二零二五年度離婚協(xié)議書:房產(chǎn)各半分割及婚姻解除后共同財產(chǎn)處理合同
- 二零二五年度酒店客房經(jīng)營權(quán)及服務(wù)質(zhì)量標(biāo)準(zhǔn)合同
- 小學(xué)科學(xué)新課標(biāo)科學(xué)課程標(biāo)準(zhǔn)解讀
- 高中主題班會 遠(yuǎn)離背后“蛐蛐”課件-高二下學(xué)期人際交往主題班會
- DeepSeek科普課件深度解析
- 湖南省長沙市北雅中學(xué)2024-2025學(xué)年九年級下學(xué)期開學(xué)考試英語試題(含答案含聽力原文無音頻)
- 大模型應(yīng)用服務(wù)平臺建設(shè)研究
- 2024年02月北京2024年江蘇銀行北京分行春季校園招考筆試歷年參考題庫附帶答案詳解
- 2025年駐村個人工作計劃
- 重磅!2024年中國載人飛艇行業(yè)發(fā)展前景及市場空間預(yù)測報告(智研咨詢)
- 全球氣候變化與應(yīng)對措施
- 化工企業(yè)安全生產(chǎn)信息化系統(tǒng)管理解決方案
- 2025年湖南科技職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
評論
0/150
提交評論