java課件-第14章socket網(wǎng)絡(luò)編程_第1頁
java課件-第14章socket網(wǎng)絡(luò)編程_第2頁
java課件-第14章socket網(wǎng)絡(luò)編程_第3頁
java課件-第14章socket網(wǎng)絡(luò)編程_第4頁
java課件-第14章socket網(wǎng)絡(luò)編程_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論