国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C# Socket詳細剖析

開發 后端
這里介紹C# Socket用法基本上不算很復雜,只是不知道托管之后的Socket有沒有其他性能或者安全上的問題。在C#里面能找到的最底層的操作也就是socket了,概念不做解釋。

C#語言還是比較常見的東西,這里我們主要介紹C# Socket,包括介紹建立本機的IPEndPoint對象等方面。

其實只要用到Socket聯接,基本上就得使用Thread,是交叉使用的。C# Socket用法基本上不算很復雜,只是不知道托管之后的Socket有沒有其他性能或者安全上的問題。在C#里面能找到的***層的操作也就是socket了,概念不做解釋。

程序模型如下:
◆WinForm程序 : 啟動端口偵聽;監視Socket聯接情況;定期關閉不活動的聯接;
◆Listener:處理Socket的Accept函數,偵聽新鏈接,建立新Thread來處理這些聯接(Connection)。
◆Connection:處理具體的每一個聯接的會話。

1:WinForm如何啟動一個新的線程來啟動Listener:

  1.  //start the server  
  2. private void btn_startServer_Click(object sender, EventArgs e)  
  3. {  
  4. //this.btn_startServer.Enabled = false;  
  5. Thread _createServer = new Thread(new ThreadStart(WaitForConnect));  
  6. _createServer.Start();  
  7. }  
  8. //wait all connections  
  9. private void WaitForConnect()  
  10. {  
  11. SocketListener listener = new SocketListener(Convert.ToInt32(this.txt_port.Text));  
  12.  listener.StartListening();  

因為偵聽聯接是一個循環等待的函數,所以不可能在WinForm的線程里面直接執行,不然Winform也就是無法繼續任何操作了,所以才指定一個新的線程來執行這個函數,啟動偵聽循環。
這一個新的線程是比較簡單的,基本上沒有啟動的參數,直接指定處理函數就可以了。

2:Listener如何啟動循環偵聽,并且啟動新的帶有參數的線程來處理Socket聯接會話。

先看如何建立偵聽:(StartListening函數)

  1. // Create a TCP/IP socket.  
  2. Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  
  3. // Bind the socket to the local endpoint andlisten for incoming connections.  
  4. try  
  5. {  
  6. listener.Bind(localEndPoint);  
  7. listener.Listen(20);//20 trucks  
  8.  
  9. // Start listening for connections.  
  10. while (true)  
  11. {  
  12. // here will be suspended while waiting for a new connection.  
  13. Socket connection = listener.Accept();  
  14. Logger.Log("Connect", connection.RemoteEndPoint.ToString());//log it, new connection  
  15. ……  
  16. }  
  17. }  
  18. …… 

基本步驟比較簡單:
建立本機的IPEndPoint對象,表示以本機為服務器,在指定端口偵聽;然后綁定到一個偵聽Socket上;進入while循環,等待新的聯接;如果有新的聯接,那么建立新的socket來對應這個聯接的會話。

值得注意的就是這一句聯接代碼:listener.Accept()。執行這一句的時候,程序就在這個地方等待,直到有新的聯檢請求的時候程序才會執行下一句。這是同步執行,當然也可以異步執行。

新的聯接Socket建立了(Accept之后),對于這些新的socket該怎么辦呢?他們依然是一個循環等待,所以依然需要建立新的Thread給這些Socket去處理會話(接收/發送消息),而這個Thread就要接收參數了。Thread本身是不能接收參數的,為了讓它可以接收參數,可以采用定義新類,添加參數作為屬性的方法來解決。因為每一個Socket是一個Connection周期,所以我定義了這么一個類public class Connection。這個類至少有這樣一個構造函數public Connection(Socket socket); 之所以這么做,就是為了把Socket參數傳給這個Connection對象,然后好讓Listener啟動這個Thread的時候,Thread可以知道他正在處理哪一個Socket。具體處理的方法:(在Listener的StartListening函數,ocket connection = listener.Accept();之后)

  1. Connection gpsCn = new Connection(connection);  
  2. //each socket will be wait for data. keep the connection.  
  3. Thread thread = new Thread(new ThreadStart(gpsCn.WaitForSendData));  
  4. thread.Name = connection.RemoteEndPoint.ToString();  
  5. thread.Start(); 

3:Connection的會話處理
建立了新的Connection(也就是socket),遠程就可以和這個socket進行會話了,無非就是send和receive。現在先看看怎么寫的這個線程運行的Connection. WaitForSendData函數

  1. while (true)  
  2. {  
  3. bytes = new byte[1024];  
  4. string data = "";  
  5. //systm will be waiting the msg of receive envet. like Accept();  
  6. //here will be suspended while waiting for socket income msg.  
  7. int bytesRec = this._connection.Receive(bytes);  
  8. _lastConnectTime = DateTime.Now;  
  9. if (bytesRec == 0)//close envent  
  10. {  
  11. Logger.Log("Close Connection", _connection.RemoteEndPoint.ToString());  
  12. break;  
  13. }  
  14. data += Encoding.ASCII.GetString(bytes, 0, bytesRec);  
  15. //…….handle your data.  

可以看到這個處理的基本步驟如下:執行Receive函數,接收遠程socket發送的信息;把信息從字節轉換到string;處理該信息,然后進入下一個循環,繼續等待C# Socket發送新的信息。

值得注意的有幾個:
1:Receive函數。這個函數和Listener的Accept函數類似。在這個地方等待執行,如果沒有新的消息,這個函數就不會執行下一句,一直等待。
2:接收的是字節流,需要轉化成字符串
3:判斷遠程關閉聯接的方式
4:如果對方的消息非常大,還得循環接收這個data。

【編輯推薦】

  1. C#類和結構簡單介紹
  2. C# explicti和implicit詳解
  3. C#編寫ActiveX控件詳細介紹
  4. C# StringBuilder和String淺析
  5. C#別名指示符學習經驗
責任編輯:佚名 來源: cnblogs
相關推薦

2009-09-11 11:17:04

C#引用類型

2009-09-03 16:58:49

C#內存管理

2009-09-18 10:00:17

C#數組操作

2009-08-31 17:26:32

C#異常處理

2009-08-27 17:51:34

C#匿名方法

2009-08-31 16:29:21

C#控制輸入法

2009-09-04 11:06:40

C#訪問修飾符

2009-08-28 15:38:49

C#實現斷點續傳

2009-09-07 13:42:56

C# Pop3類

2009-09-07 14:29:52

C# ServiceC

2009-09-01 16:29:03

QuickSort C

2009-08-03 16:45:02

C#異步Socket

2009-08-18 16:45:40

C# Raw Sock

2009-08-27 16:29:18

C#動態編譯

2009-09-02 18:14:33

C# WebClien

2009-09-01 11:04:59

C#調用擴展方法

2009-09-11 11:09:36

C#引用類型

2009-08-28 10:44:46

C#字符數組轉換

2009-08-10 16:30:56

C# BitmapDa

2009-08-12 15:34:40

C# DBNull
點贊
收藏

51CTO技術棧公眾號

欧美国产日韩一区| 国产精品久久影院| 亚洲欧美另类国产| 日韩精品一区中文字幕| 亚洲乱码久久| 美女福利精品视频| 黄色片免费在线| 99久久精品免费看国产免费软件| 国产精品亚洲综合天堂夜夜| 国产95亚洲| 在线免费观看日本欧美爱情大片| 欧美大片免费看| 亚洲欧洲自拍| 欧美不卡在线视频| 亚洲综合色视频在线观看| 成人福利视频网站| 欧美日韩国产不卡在线看| 国产成人一区二区三区影院| 久久久精品影院| 爱情电影社保片一区| 欧美精品一卡两卡| 中文字幕亚洲精品视频| 中文字幕综合网| 成人漫画网站免费| 99国内精品久久| 青青草视频在线免费播放| 激情文学综合丁香| 久久免费一级片| 国产剧情一区在线| 色涩成人影视在线播放| 免费人成精品欧美精品| 区一区二区三区中文字幕| 亚洲视频在线观看视频| 永久免费在线| 日韩欧美在线网址| 麻豆电影在线| 欧美老年两性高潮| a篇片在线观看网站| 日韩一区二区三区视频在线| 波多野结衣中文在线| 中文字幕亚洲无线码在线一区| 亚洲午夜免费| 亚洲综合色激情五月| 首页国产欧美久久| 男女激情无遮挡| 亚洲香肠在线观看| 久久综合网导航| 欧美国产精品va在线观看| av一区二区高清| 日本视频一区在线观看| 美女视频一区二区三区| 亚洲熟妇av日韩熟妇在线| 亚洲国产人成综合网站| 黄色在线观看网| 色婷婷综合成人av| 亚洲免费福利一区| 国产精品视频免费一区| 奇米亚洲午夜久久精品| 97在线观看| 日韩一区二区电影网| 欧美美女福利视频| 国产精品久久久久久久9999| 玖玖视频精品| www.97| 精品国产乱子伦一区| 日韩一区二区三区高清在线观看| 色综合久久久久久中文网| 国产精品美女久久久浪潮软件| 午夜宅男在线视频| 欧美精品一区男女天堂| 黄页网站在线| 精品国产一区二区三区久久狼黑人| 亚洲综合社区| 国产va在线视频| 男人插女人视频在线观看| 日韩欧美一区中文| 国产综合色精品一区二区三区| 国产麻豆一区| 日韩欧美亚洲在线| 精品国产乱码久久久久久老虎| 亚洲性人人天天夜夜摸| wwww亚洲| 激情综合色综合啪啪开心| 日韩欧美成人一区二区| 久久久久91| 日本在线高清| 成人精品小视频| 欧美做受高潮1| 欧美日韩午夜影院| 国产麻豆精品视频| 美女黄视频在线观看| 欧洲av无码放荡人妇网站| 98精品国产自产在线观看| 亚洲电影一区二区三区| 日韩精品色哟哟| 亚洲精品一级二级三级| 久热av在线| 日本中文字幕片| 日韩国产精品一区二区| 亚洲精选一区二区| 免费在线观看日韩欧美| av在线电影观看| 欧美高清性xxxxhd| 亚洲精品wwww| 91原创在线视频| 一区二区日韩| 久久米奇亚洲| 久久精品一二三区| 亚洲精品影视在线观看| 亚洲大型综合色站| 日韩视频免费| 国产精品欧美一区二区三区不卡 | 99久久九九| 久久在线精品视频| 国产精品久久国产精麻豆99网站| 精品成av人一区二区三区| 欧美女子与性| 欧美精品在线一区| 欧美精品videosex牲欧美| 色婷婷激情综合| av午夜一区麻豆| 综合久久十次| 久久国内精品| 大片免费播放在线视频| 日韩欧美国产综合在线| 日韩av理论片| 尤物九九久久国产精品的特点| 亚洲色图欧洲色图| 日韩国产欧美一区二区三区| 久久综合给合| 丰满诱人av在线播放| 一区二区三区 日韩| 人禽交欧美网站免费| 国产成人久久久精品一区| 精品国产乱码久久久久久老虎| 欧美韩国日本不卡| 免费成人美女在线观看.| 久久最新网址| 四虎国产精品免费久久5151| 天堂中文av在线资源库| 同心难改在线观看| 中文字幕免费在线视频| 99国产精品白浆在线观看免费| 国产精品国产精品| 欧美做受高潮1| 欧美黑人xxx| 亚洲精品在线看| 日韩av一卡二卡| 欧美日韩一区二区三区视频| 午夜日韩在线电影| 国产欧美综合在线观看第十页| 波多野结衣视频一区| 亚洲精品激情| 激情久久久久久| 9久re热视频在线精品| 亚洲一区二区三区高清| 亚洲欧美日韩视频二区| 午夜天堂精品久久久久| 午夜电影亚洲| 极品中文字幕一区| 国产中文一区| 韩国久久久久| 一区二区三区导航| 视频一区在线播放| 国产福利一区二区三区| 丁香一区二区三区| 国产亚洲一区二区三区四区| 日韩美女视频一区二区| 亚洲一区二区三区视频在线播放| 亚洲不卡av一区二区三区| 在线精品视频一区二区| 日韩欧美黄色影院| yellow中文字幕久久| 国产欧美精品一区二区色综合 | 国产极品久久久久久久久波多结野 | 国产伦精品一区二区三区四区视频_| 香港三级日本三级a视频| 密臀av一区二区三区| 在线观看麻豆视频| av免费网站在线| 精品国产乱子伦一区二区| 日韩精品免费一区二区三区| 国产另类ts人妖一区二区| 成人免费毛片嘿嘿连载视频| 欧美日韩中国免费专区在线看| 亚洲国产精品一区二区三区| 超薄丝袜一区二区| 美女被啪啪一区二区| 羞羞的视频网站| 国产精品电影| 99re66热这里只有精品8| 狠狠色丁香婷婷综合| 午夜不卡av在线| 久久久精品国产网站| 91大片在线观看| 亚州福利视频| 国产精品xxx| 精品一区中文字幕| 欧美日韩精品综合在线| 亚洲欧美日韩爽爽影院|