《程序設(shè)計(jì)與實(shí)例分析》課件-第十講 - 網(wǎng)絡(luò)編程_第1頁
《程序設(shè)計(jì)與實(shí)例分析》課件-第十講 - 網(wǎng)絡(luò)編程_第2頁
《程序設(shè)計(jì)與實(shí)例分析》課件-第十講 - 網(wǎng)絡(luò)編程_第3頁
《程序設(shè)計(jì)與實(shí)例分析》課件-第十講 - 網(wǎng)絡(luò)編程_第4頁
《程序設(shè)計(jì)與實(shí)例分析》課件-第十講 - 網(wǎng)絡(luò)編程_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ)1面向鏈接的套接字編程(TCP)2面向無連接的套接字編程(UDP)3案例分析4Contents目錄網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ)1面向鏈接的套接字編程(TCP)2面向無連接的套接字編程(UDP)3案例分析4Contents目錄10.1網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ)網(wǎng)絡(luò)編程的目的就是指直接或間接地通過網(wǎng)絡(luò)協(xié)議與其他計(jì)算機(jī)進(jìn)行通信。網(wǎng)絡(luò)編程中有兩個(gè)主要的問題:一是如何準(zhǔn)確地定位網(wǎng)絡(luò)上一臺或多臺主機(jī),另一個(gè)就是找到主機(jī)后如何可靠、高效地進(jìn)行數(shù)據(jù)傳輸。在TCP/IP協(xié)議中IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機(jī)的定位,數(shù)據(jù)傳輸?shù)穆酚?,由IP地址可以唯一的確定Internet上的一臺主機(jī)。而TCP層則提供面向應(yīng)用的數(shù)據(jù)傳輸機(jī)制,這是網(wǎng)絡(luò)編程的主要對象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的。10.1網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ)網(wǎng)絡(luò)的基本概念I(lǐng)P地址:IPv4、IPv6域名端口號協(xié)議網(wǎng)絡(luò)協(xié)議TCP協(xié)議UDP協(xié)議兩種協(xié)議的比較10.1網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ).NET當(dāng)中的類——IPAddress10.1網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ).NET當(dāng)中的類——IPEndPoint10.1網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ).NET當(dāng)中的類——套接字Socket套接字其實(shí)就是源IP地址和目的IP地址以及源端口號和目的端口號的組合。要通過Internet進(jìn)行通信,至少需要一對套接字,其中一個(gè)運(yùn)行在客戶端,稱之為ClientSocket,另一個(gè)運(yùn)行于服務(wù)器端面,稱為ServerSocket。根據(jù)連接啟動的方式以及本地要連接的目標(biāo),套接字之間的連接過程可以分為三個(gè)步驟:服務(wù)器監(jiān)聽、客戶端請求、連接確認(rèn)。10.1網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ).NET當(dāng)中的類——套接字Socket10.1網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ).NET當(dāng)中的類——網(wǎng)絡(luò)流NetworkStreamNetworkStream類提供用于網(wǎng)絡(luò)訪問的基礎(chǔ)數(shù)據(jù)流。它提供了在阻塞模式下通過Stream套接字發(fā)送和接收數(shù)據(jù)的方法。要?jiǎng)?chuàng)建NetWorkStream,必須提供連接的Socket。也可以指定NetWorkStream對所提供的Socket具有哪些FileAccess權(quán)限。默認(rèn)情況下,關(guān)閉NetworkStream并不會關(guān)閉所提供的Socket。如果要使NetworkStream擁有關(guān)閉所提供的Socket的權(quán)限,則必須將OwnsSocket構(gòu)造函數(shù)參數(shù)的值指定為true。具體屬性和方法詳見MSDN網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ)1面向鏈接的套接字編程(TCP)2面向無連接的套接字編程(UDP)3案例分析4Contents目錄10.2面向鏈接的套接字編程(TCP)IP連接領(lǐng)域有兩種通信方式:面向連接和無連接的。在面向連接的套接字中,使用TCP協(xié)議來建立兩個(gè)IP地址端點(diǎn)之間的會話。一旦建立了這種連接,就可以在設(shè)備之間可靠地傳輸數(shù)據(jù)。在使用套接字通信過程中主動發(fā)起通信的一方被稱為客戶端,接收請求進(jìn)行通信的一方成為服務(wù)端。為了建立面向連接的套接字,客戶端和服務(wù)端必須分別進(jìn)行編程。10.2面向鏈接的套接字編程(TCP)在使用面向連接的套接字時(shí),首先必須要知道建立這個(gè)連接的過程,也就是常說的三次握手的過程,連接建立好之后,再進(jìn)行數(shù)據(jù)的傳輸,數(shù)據(jù)傳輸完畢則關(guān)閉連接,此時(shí),基于連接的通信則要進(jìn)行四次揮手過程才能斷開整個(gè)連接。10.2面向鏈接的套接字編程(TCP)服務(wù)端程序創(chuàng)建套接字Socket()綁定本地地址及端口Bind()開始監(jiān)聽Listen()等待客戶端請求接受客戶端連接或接受數(shù)據(jù)Receive()關(guān)閉套接字Close()10.2面向鏈接的套接字編程(TCP)客戶端程序創(chuàng)建套接字Socket()綁定服務(wù)器端口與地址Bind()建立與服務(wù)器連接Connect()發(fā)送或接收數(shù)據(jù)Send()關(guān)閉套接字Close()分析運(yùn)行結(jié)果?10.2面向鏈接的套接字編程(TCP)使用TcpListener和TcpClient在System.Net.Sockets命名空間中有兩個(gè)專門用于TCP協(xié)議編程的類:TcpClient和TcpListener。這兩個(gè)類提供了直觀的容易使用的屬性和方法,從而降低了TCP協(xié)議編程的難度。TcpListener類提供一些簡單方法,用于在阻塞同步模式下偵聽和接收傳入連接請求??蛻舳耸褂肨cpClient或Socket來連接TcpListener。TcpClient類為TCP網(wǎng)絡(luò)服務(wù)提供客戶端連接。TcpClient類提供了一些簡單的方法,用于在同步阻塞模式下通過網(wǎng)絡(luò)來連接、發(fā)送和接收流數(shù)據(jù)。案例分析網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ)1面向鏈接的套接字編程(TCP)2面向無連接的套接字編程(UDP)3案例分析4Contents目錄10.3面向無連接的套接字編程(UDP)UDP協(xié)議使用無連接的套接字,無連接的套接字不需要在網(wǎng)絡(luò)設(shè)備之間發(fā)送連接信息,因此,通信的兩端基本上是對等的,很難確定誰是服務(wù)器,誰是客戶端。不妨把先發(fā)送信息的一端看成客戶端,先接收數(shù)據(jù)的一端看成是服務(wù)器。10.3面向無連接的套接字編程(UDP)面向無連接的套接字程序的基本結(jié)構(gòu)10.3面向無連接的套接字編程(UDP)服務(wù)端/客戶端:創(chuàng)建Socket。綁定本地/遠(yuǎn)程地址及端口。使用ReceiveFrom()接收數(shù)據(jù)。使用SendTo()發(fā)送數(shù)據(jù)。關(guān)閉Socket。udpSocket.Close();10.3面向無連接的套接字編程(UDP)與面向連接的套接字的主要區(qū)別:使用UDP協(xié)議進(jìn)行網(wǎng)絡(luò)通信,不需要事先建立連接,知道對方的地址即可發(fā)送或接收數(shù)據(jù)。建立Socket時(shí)指定SocketType為SocketType.Dgram,ProtocolType為ProtocolType.UDP協(xié)議。不需要執(zhí)行Connect()方法建立連接。直接使用SentTo()或ReceiveFrom()發(fā)送或接收數(shù)據(jù)。10.3面向無連接的套接字編程(UDP)使用UdpClient:編寫基于UDP協(xié)議的無連接程序,還可以使用UdpClient類。UdpClient類提供了一些簡單的方法,用于在阻塞同步模式下發(fā)送和接收無連接UDP數(shù)據(jù)包。因?yàn)閁DP是無連接傳輸協(xié)議,所以不需要在發(fā)送和接收數(shù)據(jù)前建立遠(yuǎn)程主機(jī)連接。但可以選擇使用下面兩種方法之一來建立默認(rèn)遠(yuǎn)程主機(jī):使用遠(yuǎn)程主機(jī)名和端口號作為參數(shù)創(chuàng)建UDPClient類的實(shí)例創(chuàng)建UdpClient類的實(shí)例,然后調(diào)用Connect()方法案例分析網(wǎng)絡(luò)程序設(shè)計(jì)基礎(chǔ)1面向鏈接的套接字編程(TCP)2面向無連接的套接字編程(UDP)3案例分析4Contents目錄10.4案例分析設(shè)計(jì)一個(gè)Windows窗體應(yīng)用程序,能夠?qū)崿F(xiàn)一對一聊天。使用TcpListener

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論