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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論