freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c_網(wǎng)絡(luò)編程---第六章__tcpudp編程-wenkub

2022-11-01 03:37:58 本頁面
 

【正文】 數(shù)據(jù)報(bào)只提供不可靠的傳輸方式,但它具有其自身的一些特點(diǎn): ( 1) UDP是一個(gè)無連接協(xié)議,傳輸數(shù)據(jù)之前信源和信宿不需要建立連接,因此不存在連接建立的時(shí)延。每個(gè)數(shù)據(jù)報(bào)都可以被網(wǎng)絡(luò)系統(tǒng)獨(dú)立路由。 用戶數(shù)據(jù)報(bào)協(xié)議( User Datagram Protocol, UDP)是傳輸層的兩個(gè)主要協(xié)議之一,相對 TCP協(xié)議來說, UDP是一種非常簡單的協(xié)議,在網(wǎng)絡(luò)層的基礎(chǔ)上實(shí)現(xiàn)了應(yīng)用進(jìn)程之間端到端的通信。 ( 2)提供全雙工數(shù)據(jù)傳輸服務(wù),只要建立了 TCP連接,就能在兩個(gè)應(yīng)用進(jìn)程間進(jìn)行雙向的數(shù)據(jù)傳輸服務(wù),但是這種傳輸只是端到端的傳輸,不支持廣播和多播。也正因?yàn)檫@樣,使 TCP協(xié)議成為傳輸層最常用的協(xié)議,同時(shí)也是一個(gè)比較復(fù)雜的協(xié)議,其提供了傳輸層幾乎所有的功能。由于它們的實(shí)現(xiàn)方式不同,因此各有一套屬于自己的端口號,且相互獨(dú)立。 ?掌握 C中面向 TCP和 UDP編程的主要類:TcpClient、 TcpListener和 UdpClient。 ?掌握 TcpClient、 TcpListener和 UdpClient的編程方法??梢圆捎萌缦挛逶M來描述兩個(gè)應(yīng)用進(jìn)程之間的通信關(guān)聯(lián)。因此和 IP協(xié)議一樣,成為了 TCP/IP協(xié)議族中最重要的協(xié)議之一。 第6章 TCP/UDP編程 5 TCP/UDP概述 ( 3)提供面向字節(jié)流的服務(wù),即 TCP協(xié)議的數(shù)據(jù)傳輸是面向字節(jié)流的,兩個(gè)建立了 TCP連接的應(yīng)用進(jìn)程之間交換的是字節(jié)流。與 TCP協(xié)議不同, UDP協(xié)議是一種無連接的協(xié)議,數(shù)據(jù)在傳輸之前通信雙方不需要建立連接。因此從同一個(gè)信源發(fā)往同一個(gè)信宿的多個(gè) UDP報(bào)文可能選擇不同的路徑達(dá)到信宿,它們達(dá)到的先后順序也可能不同于發(fā)送順序。在信源端, UDP傳送數(shù)據(jù)的速度僅僅受應(yīng)用程序生成數(shù)據(jù)的速度、計(jì)算機(jī)的能力和傳輸帶寬的限制;在信宿端, UDP把每個(gè)數(shù)據(jù)報(bào)放在隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)數(shù)據(jù)報(bào)。 由于 UDP具有這些特點(diǎn),有許多應(yīng)用更適合使用 UDP協(xié)議,如: ( 1)只需要簡單數(shù)據(jù)交換的應(yīng)用,例如 DNS服務(wù),它不需要復(fù)雜的可靠性保證機(jī)制,這樣,利用 UDP來傳輸數(shù)據(jù)既可以節(jié)省系統(tǒng)開銷又提高了網(wǎng)絡(luò)的傳輸效率。 第6章 TCP/UDP編程 7 .NET中的 TCP編程基礎(chǔ) TcpClient類 TcpClient類為 TCP網(wǎng)絡(luò)服務(wù)提供客戶端連接,它構(gòu)建于 Socket類之上,以提供較高級別的 TCP服務(wù),即提供了通過網(wǎng)絡(luò)連接、發(fā)送和接收數(shù)據(jù)的簡單方法。 屬 性 描 述 Available 獲取網(wǎng)絡(luò)接收緩沖區(qū)中可供讀取的數(shù)據(jù)量 Client 獲取或設(shè)置基礎(chǔ) Socket Connected 標(biāo)識 TcpClient的基礎(chǔ) Socket是否已連接到遠(yuǎn)程主機(jī) NoDelay 指定在發(fā)送或接收緩沖區(qū)未滿時(shí),套接字是否將延遲發(fā)送或接收數(shù)據(jù) ReceiveBufferSize 獲取或設(shè)置接收緩沖區(qū)的大小 ReceiveTimeout 獲取或設(shè)置在初始化一個(gè)讀取操作以后 TcpClient 等待接收數(shù)據(jù)的時(shí)間量 SendBufferSize 獲取或設(shè)置發(fā)送緩沖區(qū)的大小 SendTimeout 獲取或設(shè)置 TcpClient 等待發(fā)送操作成功完成的時(shí)間量 第6章 TCP/UDP編程 8 .NET中的 TCP編程基礎(chǔ) TcpClient類 TcpClient 構(gòu) 造 函 數(shù) BeginConnect 開始一個(gè)對遠(yuǎn)程主機(jī)連接的異步請求 Close 釋放 TcpClient 實(shí)例,而不關(guān)閉基礎(chǔ)連接 Connect 依據(jù)指定的主機(jī)名和端口號連接到 TCP主機(jī) EndConnect 異步接受傳入的連接嘗試 GetStream 返回用于發(fā)送和接收數(shù)據(jù)的 NetworkStream實(shí)例 第6章 TCP/UDP編程 9 .NET中的 TCP編程基礎(chǔ) TcpClient類 通過 TcpClient類實(shí)現(xiàn)與 TCP主機(jī)的通信流程如圖所示。 ( 2) TcpClient( AddressFamily),使用指定的地址族初始化 TcpClient類的新實(shí)例。 因此,在 TcpClient的構(gòu)造函數(shù)中,如果沒有指定遠(yuǎn)程主機(jī)名和端口號,它只是用來實(shí)例化 TcpClient,同時(shí)實(shí)現(xiàn)與本地 IP地址和 Port端口的綁定。 ( 2) Connect( IPAddress),使用指定的 IP地址和端口號將客戶端連接到遠(yuǎn)程 TCP主機(jī)。 m_client = new TcpClient( )。 該方法首先通過 NetworkStream實(shí)例,進(jìn)而利用所獲取的 NetworkStream實(shí)例的讀寫方法 Write和 Read來發(fā)送和接收數(shù)據(jù),其實(shí)現(xiàn)代碼如下所示。 //接收網(wǎng)絡(luò)數(shù)據(jù) (m_returnData)。 第6章 TCP/UDP編程 12 .NET中的 TCP編程基礎(chǔ) TcpListener類 TcpClient類實(shí)現(xiàn)了客戶端編程抽象,因此構(gòu)建客戶端網(wǎng)絡(luò)應(yīng)用程序便可以直接使用 TcpClient取代 Socket,更加方便易用。 名 稱 描 述 ExclusiveAddressUse 獲取或設(shè)置一個(gè)布爾值,以指定當(dāng)前 TcpListener是否只允許一個(gè)基礎(chǔ)套接字來偵聽特定端口 LocalEndpoint 獲取當(dāng)前 TcpListener的基礎(chǔ) IPEndPoint實(shí)例,此對象包含關(guān)于本地網(wǎng)絡(luò)接口的 IP地址和端口號信息 Active 指明 TcpListener是否正在偵聽連接請求(受保護(hù)方法) Server 獲取基礎(chǔ)網(wǎng)絡(luò) Socket實(shí)例 第6章 TCP/UDP編程 13 .NET中的 TCP編程基礎(chǔ) TcpListener類 名 稱 描 述 AcceptSocket 接受掛起的連接請求,并返回一個(gè) Socket實(shí)例用來與客戶進(jìn)行通信 AcceptTcpClient 接受掛起的連接請求,并返回一個(gè) TcpClient實(shí)例用來與客戶進(jìn)行通信 BeginAcceptSocket 開始一個(gè)異步操作來接受一個(gè)傳入的連接嘗試 BeginAcceptTcpClient 開始一個(gè)異步操作來接受一個(gè)傳入的連接嘗試 EndAcceptSocket 異步接受傳入的連接嘗試,并創(chuàng)建新的 Socket來處理遠(yuǎn)程主機(jī)通信 EndAcceptTcpClient 異步接受傳入的連接嘗試,并創(chuàng)建新的 TcpClient來處理遠(yuǎn)程主機(jī)通信 Pending 確定是否有掛起的連接請求 Start 開始偵聽客戶端的連接請求 Stop 關(guān)閉偵聽器 第6章 TCP/UDP編程 14 .NET中的 TCP編程基礎(chǔ) TcpListener類 通常情況下,服務(wù)器端應(yīng)用程序在啟動時(shí)將首先綁定本地網(wǎng)絡(luò)接口的 IP地址和端口號,然后進(jìn)入偵聽客戶請求的狀態(tài),以便于客戶端應(yīng)用程序提出顯式請求。其實(shí)現(xiàn)流程如右圖所示。 m_Listener = new TcpListener(m_host, m_port)。 通過返回的 Socket或 TcpClient實(shí)例來實(shí)現(xiàn)與提出連接請求的客戶的單獨(dú)網(wǎng)絡(luò)數(shù)據(jù)傳輸。如下代碼所示。 Thread m_clientthread = new Thread(new ThreadStart())。 …… while (true) { //接收信息 m_returnData = ( )。 第6章 TCP/UDP編程 18 基于 TCP的編程實(shí)例 為了綜合應(yīng)用 TcpListener和 TcpClient實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用程序的設(shè)計(jì),本節(jié)設(shè)計(jì)了一個(gè)簡單的詢問時(shí)間和回應(yīng)程序,即客戶端程序可以利用 GETDATE命令詢問服務(wù)器的當(dāng)前時(shí)間,而對于除命令以外的數(shù)據(jù),服務(wù)器則原樣返回給客戶端程序。 圖 客戶端程序和服務(wù)器程序交互流程圖 圖 系統(tǒng)類圖 第6章 TCP/UDP編程 19 基于 TCP的編程實(shí)例 服務(wù)器端編程 服務(wù)器程序的實(shí)現(xiàn)主要是基于 TcpListener、 TcpClient和多線程技術(shù),利用TcpListener實(shí)例進(jìn)行客戶連接的偵聽和接受客戶連接請求,而通過多線程技術(shù)為每個(gè)客戶連接創(chuàng)建一個(gè)處理線程,完成與客戶程序的通信。 using 。 using 。//接收和發(fā)送數(shù)據(jù) byte[] data。 return data。 m_usename = m_returnData。 (data, 0, )。 } else if ((GETDATA) 1) { m_sendData = ( )。 } ( )。 TcpListener m_Listener = null。 m_port = (args[1].ToString( ))。 m_Listener = new TcpListener(m_host, m_port)。 ClientHandle m_handle = new ClientHandle( )。 } ( )。實(shí)現(xiàn)過程如代碼實(shí)例 。 using 。 } static void Main(string[] args) { string m_servername=,m_usename=NoName。 string m_sendData, m_returnData。 第6章 TCP/UDP編程 24 基于 TCP的編程實(shí)例 客戶端編程 if ( 3) (Usage: Client Usename ServerName Port)。 rt = true。 rs = new StreamReader(( ))。 (data, 0, )。 m_sendData = ( )。 (data, 0, )。 } } } } } 第6章 TCP/UDP編程 26 .NET中的 UDP編程基礎(chǔ) 在 .NET中,基于 UDP協(xié)議的網(wǎng)絡(luò)程序設(shè)計(jì)可以通過以下 4種方法來實(shí)現(xiàn)。較前面三種方法具有直觀易用等優(yōu)勢。 第6章 TCP/UDP編程 27 .NET中的 UDP編程基礎(chǔ) BeginReceive 從遠(yuǎn)程主機(jī)異步接收數(shù)據(jù)報(bào) BeginSend 將數(shù)據(jù)報(bào)異步發(fā)送到遠(yuǎn)程主機(jī) Close 關(guān)閉 UDP連接 Connect 指定發(fā)送數(shù)據(jù)的默認(rèn)遠(yuǎn)程主機(jī) DropMulticastGroup 退出多播組 EndReceive 結(jié)束掛起的異步接收 EndSend 結(jié)束掛起的異步發(fā)送 JoinMulticastGroup 將當(dāng)前的 UdpClient實(shí)例添加到多播組 Receive 接收已由遠(yuǎn)程主機(jī)發(fā)送的 UDP數(shù)據(jù)報(bào),同時(shí)返回遠(yuǎn)程主機(jī)信息 Send 將 UDP數(shù)據(jù)報(bào)發(fā)送到遠(yuǎn)程主機(jī) UdpClient類 Available 獲取從網(wǎng)絡(luò)接收的可讀取的數(shù) 據(jù)量 Client 獲取或設(shè)置基礎(chǔ)網(wǎng)絡(luò) Socket DontFragment 獲取或設(shè)置
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1