c# 20 套接字編程實例 udp tcp通信

c# 20 套接字編程實例 udp tcp通信

ID:36230621

大?。?6.00 KB

頁數(shù):6頁

時間:2019-05-07

c# 20 套接字編程實例 udp tcp通信_第1頁
c# 20 套接字編程實例 udp tcp通信_第2頁
c# 20 套接字編程實例 udp tcp通信_第3頁
c# 20 套接字編程實例 udp tcp通信_第4頁
c# 20 套接字編程實例 udp tcp通信_第5頁
資源描述:

《c# 20 套接字編程實例 udp tcp通信》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、不要想在一天那做完所有事情C#2.0套接字編程實例UDPTCP通信2010-04-0120:13by網(wǎng)絡(luò)金領(lǐng),293visits,網(wǎng)摘,收藏,編輯首先從原理上解釋一下采用Socket接口的網(wǎng)絡(luò)通訊,這里以最常用的C/S模式作為范例,首先,服務(wù)端有一個進(jìn)程(或多個進(jìn)程)在指定的端口等待客戶來連接,服務(wù)程序等待客戶的連接信息,一旦連接上之后,就可以按設(shè)計的數(shù)據(jù)交換方法和格式進(jìn)行數(shù)據(jù)傳輸??蛻舳嗽谛枰臅r刻發(fā)出向服務(wù)端的連接請求。這里為了便于理解,提到了一些調(diào)用及其大致的功能。使用socket調(diào)用后,僅產(chǎn)生了一個可以使用的socket描述符,這時還不能進(jìn)行通信,還要使用其他的調(diào)用,以使

2、得socket所指的結(jié)構(gòu)中使用的信息被填寫完?! ≡谑褂肨CP協(xié)議時,一般服務(wù)端進(jìn)程先使用socket調(diào)用得到一個描述符,然后使用bind調(diào)用將一個名字與socket描述符連接起來,對于Internet域就是將Internet地址聯(lián)編到socket。之后,服務(wù)端使用listen調(diào)用指出等待服務(wù)請求隊列的長度。然后就可以使用accept調(diào)用等待客戶端發(fā)起連接,一般是阻塞等待連接,一旦有客戶端發(fā)出連接,accept返回客戶的地址信息,并返回一個新的socket描述符,該描述符與原先的socket有相同的特性,這時服務(wù)端就可以使用這個新的socket進(jìn)行讀寫操作了。一般服務(wù)端可能在ac

3、cept返回后創(chuàng)建一個新的進(jìn)程進(jìn)行與客戶的通信,父進(jìn)程則再到accept調(diào)用處等待另一個連接??蛻舳诉M(jìn)程一般先使用socket調(diào)用得到一個socket描述符,然后使用connect向指定的服務(wù)器上的指定端口發(fā)起連接,一旦連接成功返回,就說明已經(jīng)建立了與服務(wù)器的連接,這時就可以通過socket描述符進(jìn)行讀寫操作了?! ?NetFrameWork為Socket通訊提供了System.Net.Socket命名空間,在這個命名空間里面有以下幾個常用的重要類分別是:  ·Socket類這個低層的類用于管理連接,WebRequest,TcpClient和UdpClient在內(nèi)部使用這個類。 

4、 ·NetworkStream類這個類是從Stream派生出來的,它表示來自網(wǎng)絡(luò)的數(shù)據(jù)流  ·TcpClient類允許創(chuàng)建和使用TCP連接  ·TcpListener類允許監(jiān)聽傳入的TCP連接請求  ·UdpClient類用于UDP客戶創(chuàng)建連接(UDP是另外一種TCP協(xié)議,但沒有得到廣泛的使用,主要用于本地網(wǎng)絡(luò))  下面我們來看一個基于Socket的雙機(jī)通信代碼的C#版本  首先創(chuàng)建Socket對象的實例,這可以通過Socket類的構(gòu)造方法來實現(xiàn):publicSocket(AddressFamilyaddressFamily,SocketTypesocketType,Protoc

5、olTypeprotocolType);  其中,addressFamily參數(shù)指定Socket使用的尋址方案,socketType參數(shù)指定Socket的類型,protocolType參數(shù)指定Socket使用的協(xié)議。  下面的示例語句創(chuàng)建一個Socket,它可用于在基于TCP/IP的網(wǎng)絡(luò)(如Internet)上通訊。Sockettemp=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);  若要使用UDP而不是TCP,需要更改協(xié)議類型,如下面的示例所示:Sockettemp=newSo

6、cket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);  一旦創(chuàng)建Socket,在客戶端,你將可以通過Connect方法連接到指定的服務(wù)器(你可以在Connect方法前Bind端口,就是以指定的端口發(fā)起連接,如果不事先Bind端口號的話,系統(tǒng)會默認(rèn)在1024到5000隨機(jī)綁定一個端口號),并通過Send方法向遠(yuǎn)程服務(wù)器發(fā)送數(shù)據(jù),而后可以通過Receive從服務(wù)端接收數(shù)據(jù);而在服務(wù)器端,你需要使用Bind方法綁定所指定的接口使Socket與一個本地終結(jié)點相聯(lián),并通過Listen方法偵聽該接口上的請求,當(dāng)

7、偵聽到用戶端的連接時,調(diào)用Accept完成連接的操作,創(chuàng)建新的Socket以處理傳入的連接請求。使用完Socket后,使用Close方法關(guān)閉Socket?! 】梢钥闯觯陨显S多方法包含EndPoint類型的參數(shù),在Internet中,TCP/IP使用一個網(wǎng)絡(luò)地址和一個服務(wù)端口號來唯一標(biāo)識設(shè)備。網(wǎng)絡(luò)地址標(biāo)識網(wǎng)絡(luò)上的特定設(shè)備;端口號標(biāo)識要連接到的該設(shè)備上的特定服務(wù)。網(wǎng)絡(luò)地址和服務(wù)端口的組合稱為終結(jié)點,在.NET框架中正是由EndPoint類表示這個終結(jié)點,它提供表示網(wǎng)絡(luò)資源或服務(wù)的抽

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。