C# Socket編程筆記

C# Socket編程筆記

ID:41037136

大?。?3.00 KB

頁數(shù):7頁

時間:2019-08-14

C# Socket編程筆記_第1頁
C# Socket編程筆記_第2頁
C# Socket編程筆記_第3頁
C# Socket編程筆記_第4頁
C# Socket編程筆記_第5頁
資源描述:

《C# Socket編程筆記》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、C#Socket編程筆記【轉(zhuǎn)載】看到這個題目,是不是很眼熟?在博客園里搜下,保證會發(fā)現(xiàn)關(guān)于這個東東的文章實在是太多了~~~真得是沒有寫得必要,而且我也有點懶得去琢磨字句。(看到這,肯定得來個轉(zhuǎn)折的了,不然就看不到下文了,不是嗎)但是,為了自己下一篇要寫的文章做參考,還是有必要先補充一下socket基礎(chǔ)知識。?????注意:如果你已經(jīng)接觸過socket,那就沒什么必要耽誤時間看下去了。另外,如果發(fā)現(xiàn)其中任何錯誤,歡迎直接指出。?????1.按慣例先來介紹下socket?????Windows中的很多東西都是從

2、Unix領(lǐng)域借鑒過來的,Socket也是一樣。在Unix中,socket代表了一種文件描述符(在Unix中一切都是以文件為單位),而這里這個描述符則是用于描述網(wǎng)絡(luò)訪問的。什么意思呢?就是程序員可以通過socket來發(fā)送和接收網(wǎng)絡(luò)上的數(shù)據(jù)。你也可以理解成是一個API。有了它,你就不用直接去操作網(wǎng)卡了,而是通過這個接口,這樣就省了很多復雜的操作。?????在C#中,MS為我們提供了System.Net.Sockets命名空間,里面包含了Socket類。?????2.有了socket,那就可以用它來訪問網(wǎng)絡(luò)了??

3、???不過你不要高興得太早,要想訪問網(wǎng)絡(luò),還得有些基本的條件(和編程無關(guān)的我就不提了):a.要確定本機的IP和端口,socket只有與某一IP和端口綁定,才能發(fā)揮強大的威力。b.得有協(xié)議吧(否則誰認得你這發(fā)送到網(wǎng)絡(luò)的是什么呀)。想要復雜的,我們可以自己來定協(xié)議。但是這個就不在這篇里提了,我這里介紹兩種大家最熟悉不過的協(xié)議:TCP&UDP。(別說你不知道,不然...不然...我不告訴你)?????如果具備了基本的條件,就可以開始用它們訪問網(wǎng)絡(luò)了。來看看步驟吧:?????a.建立一個套接字?????b.綁定本機

4、的IP和端口?????c.如果是TCP,因為是面向連接的,所以要利用ListenO()方法來監(jiān)聽網(wǎng)絡(luò)上是否有人給自己發(fā)東西;如果是UDP,因為是無連接的,所以來者不拒。?????d.TCP情況下,如果監(jiān)聽到一個連接,就可以使用accept來接收這個連接,然后就可以利用Send/Receive來執(zhí)行操作了。而UDP,則不需要accept,直接使用SendTo/ReceiveFrom來執(zhí)行操作。(看清楚哦,和TCP的執(zhí)行方法有區(qū)別,因為UDP不需要建立連接,所以在發(fā)送前并不知道對方的IP和端口,因此需要指定一個

5、發(fā)送的節(jié)點才能進行正常的發(fā)送和接收)?????e.如果你不想繼續(xù)發(fā)送和接收了,就不要浪費資源了。能close的就close吧。?????如果看了上面文字,你還不清楚的話,就來看看圖好了:?面向連接的套接字系統(tǒng)調(diào)用時序無連接的套接字系統(tǒng)調(diào)用時序?????3.開始動手敲~~代碼(簡單的代碼)?????首先我們來寫個面向連接的?TCPServer?using?System;using?System.Net;using?System.Net.Sockets;using?System.Text;namespace?t

6、cpserver{????///??

?????///?Class1的摘要說明。????///???????class?server???{????????///???????????///?應(yīng)用程序的主入口點。????????///??????????[STAThread]????????static??void?Main(string[]args)???????{????????????//?????????????//?TODO

7、:在此處添加代碼以啟動應(yīng)用程序????????????//????????????int?recv;//用于表示客戶端發(fā)送的信息長度?????????????byte[]data=new??byte[1024];//用于緩存客戶端所發(fā)送的信息,通過socket傳遞的信息必須為字節(jié)數(shù)組????????????IPEndPointipep=new?IPEndPoint(IPAddress.Any,9050);//本機預使用的IP和端口????????????Socketnewsock=new?Socket(Ad

8、dressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);???????????newsock.Bind(ipep);//綁定????????????newsock.Listen(10);//監(jiān)聽????????????Console.WriteLine("waitingforaclient?");???????????Socketclient=ne

當前文檔最多預覽五頁,下載文檔查看全文

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

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