




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
網(wǎng)絡(luò)通信協(xié)議UDP通信TCP通信10.1
網(wǎng)絡(luò)通信協(xié)議通過計(jì)算機(jī)網(wǎng)絡(luò)可以使多臺計(jì)算機(jī)實(shí)現(xiàn)連接,位于同一個網(wǎng)絡(luò)中的計(jì)算機(jī)在進(jìn)行連接和通信時需要遵守一定的規(guī)則在計(jì)算機(jī)網(wǎng)絡(luò)中,這些連接和通信的規(guī)則被稱為網(wǎng)絡(luò)通信協(xié)議,它對數(shù)據(jù)的傳輸格式、傳輸速率、傳輸步驟等做了規(guī)定,通信雙方必須同時遵守才能完成網(wǎng)絡(luò)通信協(xié)議有很多種,目前應(yīng)用最廣泛的是TCP/IP協(xié)議(Transmission
Control
Protocal/Internet
Protoal傳輸控制協(xié)議/英特網(wǎng)互聯(lián)協(xié)議),它是一個包括TCP協(xié)議和IP協(xié)議,UDP(UserDatagram
Protocol)協(xié)議、ICMP(Internet
Control
MessageProtocol)協(xié)議和其它一些協(xié)議的協(xié)議組10.1
網(wǎng)絡(luò)通信協(xié)議TCP/IP協(xié)議模型鏈路層:鏈路層是用于定義物理傳輸通道,通常是對某些網(wǎng)絡(luò)連接設(shè)備的驅(qū)動協(xié)議,例如針對光纖、雙絞線提供的驅(qū)動網(wǎng)絡(luò)層:網(wǎng)絡(luò)層是整個TCP/IP協(xié)議的
,它?主要用于將傳輸?shù)臄?shù)據(jù)進(jìn)行分組,將分組數(shù)據(jù)發(fā)送到目標(biāo)計(jì)算機(jī)或者網(wǎng)絡(luò)。層:主要使網(wǎng)絡(luò)程序進(jìn)行通信,在進(jìn)行網(wǎng)絡(luò)通信時,可以采用TCP協(xié)議,也可以采用
UDP協(xié)議。應(yīng)用層:主要負(fù)責(zé)應(yīng)用程序的協(xié)議,例如HTTP協(xié)議、FTP協(xié)議等。10.1
網(wǎng)絡(luò)通信協(xié)議10.1.1
IP地址和端在TCP/IP協(xié)議中,IP地址用來唯一標(biāo)識一臺計(jì)算機(jī)。目前,IP地址廣泛使用的版本是IPv4,它是由4個字節(jié)大小的二進(jìn)制數(shù)來表示,如:0000
0000000001IP地址也可寫成十進(jìn)制的形式,每個字節(jié)用一個十進(jìn)制數(shù)字(0-255)表示,數(shù)字間用符號“.”分開,如“”。IPV4這種用4個字節(jié)表示的IP地址
枯竭,因此IPv6
便應(yīng)運(yùn)而生了IPv6使用16個字節(jié)表示IP地址,它所擁有的地址容量約是IPv4的8×1028倍,達(dá)到2128個(算上全零的)10.1
網(wǎng)絡(luò)通信協(xié)議10.1.1
IP地址和端在計(jì)算機(jī)中,不同的應(yīng)用程序是通過端
區(qū)分的端
是用兩個字節(jié)(16位的二進(jìn)制數(shù))表示的,它的取值范圍是0~655350~1023之間的端
用于一些知名的網(wǎng)絡(luò)服務(wù)和應(yīng)用,用戶的普通應(yīng)用程序需要使用1024以上的端IP地址源計(jì)算機(jī)目標(biāo)計(jì)算機(jī)應(yīng)用程序端10.1.2
InetAdderss–
InetAdderss類用于封裝一個IP地址,并提供了一系列與IP地址相關(guān)的方法10.1
網(wǎng)絡(luò)通信協(xié)議10.1.2
InetAdderss–
InetAdderss類常用方法的使用–
運(yùn)行結(jié)果10.1
網(wǎng)絡(luò)通信協(xié)議10.1
網(wǎng)絡(luò)通信協(xié)議10.1.3
TCP和UDP協(xié)議UDP是User
Datagram
Protocol的簡稱,稱為用戶數(shù)據(jù)報協(xié)議。它是一種無連接通信協(xié)議,即在數(shù)據(jù)傳輸時,數(shù)據(jù)的發(fā)送端和接收端不建立邏輯連接。簡單來說,當(dāng)一臺計(jì)算機(jī)向另外一臺計(jì)算機(jī)發(fā)送數(shù)據(jù)時,發(fā)送端不會確認(rèn)接收端是否存在,就會發(fā)出數(shù)據(jù),同樣接收端在收到數(shù)據(jù)時,也不會向發(fā)送端反饋是否收到數(shù)據(jù)使用UDP協(xié)議傳送數(shù)據(jù)時,由于UDP的面向無連接性,不能保證數(shù)據(jù)的完整性,因此在傳輸重要數(shù)據(jù)時不建議使用UDP協(xié)議10.1
網(wǎng)絡(luò)通信協(xié)議10.1.3
TCP和UDP協(xié)議–
TCP是Transmission
Control
Protocol的簡稱,稱為傳輸控制協(xié)議。它是一種面向連接的通信協(xié)議,可以保證兩臺計(jì)算機(jī)之間可靠無差錯的數(shù)據(jù)傳輸。在TCP連接中必須要明確客戶端與服務(wù)器端,由客戶端向服務(wù)端發(fā)出連接請求,每次連接的創(chuàng)建都需要經(jīng)過“三次握手”。10.2
UDP通信10.2.1
DatagramPacketDatagramPacket類的實(shí)例對象就相當(dāng)于一個集裝箱,用于封裝UDP通信中發(fā)送或者接收的數(shù)據(jù)。創(chuàng)建DatagramPacket對象的構(gòu)造方法如下所示:DatagramPacket(byte[]
buf,int
length)DatagramPacket(byte[]
buf,int
length,InetAddress
addr,int
port)DatagramPacket(byte[]
buf,int
offset,int
length)DatagramPacket(byte[]
buf,int
offset,int
length,InetAddress
addr,intport)10.2
UDP通信10.2.1
DatagramPacket–
DatagramPacket類中的常用方法10.2
UDP通信DatagramSocketDatagramSocket10.2.2
DatagramSocketDatagramSocket類的作用就類似于碼頭,使用這個類的實(shí)例對象就可以發(fā)送和接收DatagramPacket數(shù)據(jù)包使用DatagramSocket發(fā)送數(shù)據(jù)的過程
。DatagramPacket
DatagramPacket數(shù)據(jù)傳輸發(fā)送端接收端10.2
UDP通信10.2.2
DatagramSocket–
在創(chuàng)建發(fā)送端和接收端的DatagramSocket對象時,使用的構(gòu)造方法也有所不同,DatagramSocket類中常用的構(gòu)造方法如下所示:DatagramSocket()DatagramSocket(int
port)DatagramSocket(int
port,InetAddress
addr)10.2
UDP通信10.2.2
DatagramSocket–
DatagramSocket類中的常用方法10.2
UDP通信10.2.3
UDP網(wǎng)絡(luò)程序–
要實(shí)現(xiàn)UDP通信需要創(chuàng)建一個發(fā)送端程序和一個接收端程序例程10-2創(chuàng)建了一個接收端程序,用來接收數(shù)據(jù)。在創(chuàng)建DatagramSocket對象時,指定其 的端 為8954,這樣發(fā)送端就能通過這個端 與接收端程序進(jìn)行通信。之后創(chuàng)建DatagramPacket對象時傳入一個大小為1024個字節(jié)的數(shù)組用來接收數(shù)據(jù),當(dāng)調(diào)用該對象的receive(DatagramPacket
p)方法接收到數(shù)據(jù)以后,數(shù)據(jù)會填充到DatagramPacket中,通過DatagramPacket的相關(guān)方法可以獲取接收到的數(shù)據(jù)信息10.2
UDP通信10.2.3
UDP網(wǎng)絡(luò)程序–
發(fā)送端程序例程10-3創(chuàng)建了一個發(fā)送端程序,用來發(fā)送數(shù)據(jù)。在創(chuàng)建?送端發(fā)送的數(shù)據(jù)而結(jié)束阻塞狀態(tài)
腳下留心10.2.3
UDP網(wǎng)絡(luò)程序–
一臺計(jì)算機(jī)中,一個端上只能運(yùn)行一個程序。如果UDP程序所使用的端
已經(jīng)被其它的程序占用??梢栽诿钚写翱谳斎?netstat-anb"命令來查看當(dāng)前計(jì)算機(jī)端口占用情況10.2.4
UDP案例—聊天程序–
編寫的UDP聊天程序主要是想通過指定的端 ,目標(biāo)IP地址和目標(biāo)端
,實(shí)現(xiàn)消息的發(fā)送和接收功能,并把聊天內(nèi)容顯示出來。程序的用戶圖形界面
。10.2
UDP通信10.2.4
UDP案例—聊天程序–
1、界面實(shí)現(xiàn)——setUpUI()方法10.2
UDP通信10.2.4
UDP案例—聊天程序–
2、編寫事件處理器(發(fā)送信息)10.2
UDP通信10.2.4
UDP案例—聊天程序3、DatagramSocket啟動DatagramSocket
的代碼定義在GuiChat類的initSocket()方法中,該方法需要實(shí)現(xiàn)兩個功能:第一個是接收用戶填寫程序
的端第二個是接收消息,這個功能封裝在startListen()方法中,為了避免在接收消息時AWT線程發(fā)生阻塞,需要在startListen()方法中開啟一個新的線程,把接收消息的實(shí)現(xiàn)放在新線程的run()方法中10.2
UDP通信10.210.2
UDP通信10.2.410.2
UDP通信10.2.4
UDP案例—聊天程序4、功能測試至此,所有的功能模塊都已實(shí)現(xiàn),在GuiChat的構(gòu)造方法中分別調(diào)用setUpUI()、initSocket()與setListener()方法,就完成了UDP聊天程序10.2
UDP通信TCP通信同UDP通信一樣,都能實(shí)現(xiàn)兩臺計(jì)算機(jī)之間的通信,通信的兩端都需要創(chuàng)建socket對象。TCP通信是嚴(yán)格區(qū)分客戶端與服務(wù)器端的,在通信時,必須先由客戶端去連接服務(wù)器端才能實(shí)現(xiàn)通信,服務(wù)器端不可以主動連接客戶端,并且服務(wù)器端程序需要事先啟動,等待客戶端的連接在JDK中提供了兩個類用于實(shí)現(xiàn)TCP程序,一個是ServerSocket類,用于表示服務(wù)器端,一個是Socket類,用于表示客戶端10.3
TCP通信ServerSocketSocket客戶端向服務(wù)端發(fā)出連接請求服務(wù)端響應(yīng)客戶端請求10.3.1
ServerSocket–
ServerSocket對象可以實(shí)現(xiàn)一個服務(wù)器段的程序,ServerSocket類提供了多種構(gòu)造方法,具體如下:ServerSocket()ServerSocket(int
port)ServerSocket(int
port,
int
backlog)ServerSocket(int
port,
int
backlog,
InetAddress
bindAddr)–
第二個構(gòu)造方法最常用10.3
TCP通信10.3.2
ServerSocket–
ServerSocket對象的常用方法10.3
TCP通信10.3.2
Socket–
Socket對象用于實(shí)現(xiàn)TCP客戶端程序,它提供了多種構(gòu)造方法,具體如下:Socket()Socket(String
host,
int
port)Socket(InetAddress
address,
int
port)–
最常用的是第一個構(gòu)造方法10.3
TCP通信10.3.2
Socket–
Socket對象的常用方法:10.3
TCP通信10.3.3
簡單的TCP網(wǎng)絡(luò)程序要實(shí)現(xiàn)TCP通信需要創(chuàng)建一個服務(wù)器端程序和一個客戶端程序?yàn)榱?0.3
TCP通信10.3.3
簡單的TCP網(wǎng)絡(luò)程序–
例程10-10完成了服務(wù)器端程序的編寫,接下來編寫客戶端程序10.3
TCP通信10.3.3
簡單的TCP網(wǎng)絡(luò)程序–
開啟服務(wù)端程序,線程發(fā)生阻塞,等待客戶端–
開啟客戶端程序,向服務(wù)端發(fā)送數(shù)據(jù)–
服務(wù)端結(jié)束阻塞,與客戶端開始交互數(shù)據(jù),交互完成,通信結(jié)束10.3
TCP通信10.3.4多線程的TCP網(wǎng)絡(luò)程序–
很多服務(wù)器端程序都是允許被多個應(yīng)用程序的,10.3
TCP通信ServerSocketSocketSocket–圖中代表的是多個客戶端
同一個服務(wù)器端,服務(wù)器端為每個客戶端創(chuàng)建一個對應(yīng)的Socket,并且開啟一個新的線程使兩個Socket建立專線進(jìn)行通信Socket10.3.4
多線程的TCP網(wǎng)絡(luò)程序10.3
TCP通信10.3.4
多線程的TCP網(wǎng)絡(luò)程序–為了驗(yàn)證服務(wù)器端程序是否實(shí)現(xiàn)了多線程,首先運(yùn)行服務(wù)端程序(例程10-12),之后運(yùn)行三個客戶端程序(例程10-11),當(dāng)運(yùn)行第一個客戶端程序時,服務(wù)端馬上就進(jìn)行數(shù)據(jù)處理,打印出“開始與客戶端交互數(shù)據(jù)”,再運(yùn)行第二、和第三個客戶端程序,會發(fā)現(xiàn)服務(wù)端也立刻做出回應(yīng),兩個客戶端會話結(jié)束后分別打印各自結(jié)束信息10.3
TCP通信?10.3
TCP通信10.3.5
TCP案例—文件上傳–
客戶端上傳程序10
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國電動壓面機(jī)行業(yè)深度研究分析報告
- 2025-2030年中國羊皮女裝鞋行業(yè)深度研究分析報告
- 2025-2030年中國茗優(yōu)茶行業(yè)深度研究分析報告
- 礦區(qū)安全用電合同
- 共同投資協(xié)議合同范本
- 寫字樓辦公用品采購合同6篇
- 臨沂勞動合同教師合同
- 工地班組承包合同
- 鋼質(zhì)防盜門施工方案
- 工程承包正式合同
- 2023年輔導(dǎo)員職業(yè)技能大賽試題及答案
- 2023年天津銀行招聘筆試真題
- 工程質(zhì)量控制流程圖
- 現(xiàn)代家政導(dǎo)論-課件 1.2.2認(rèn)識現(xiàn)代家政的特點(diǎn)和功能
- 日語翻譯崗位招聘面試題與參考回答2025年
- 副總經(jīng)理招聘面試題及回答建議(某大型國企)
- 浙江省寧波市九校2023-2024學(xué)年高二下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- SOAP病例書寫規(guī)范
- 上交所董秘考試題及答案
- 生產(chǎn)部員工晉升方案
- 《智慧科技點(diǎn)亮夢想》演講課件
評論
0/150
提交評論