欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#中怎么利用Socket實現(xiàn)異步通訊

這篇文章將為大家詳細講解有關(guān)C#中怎么利用Socket實現(xiàn)異步通訊,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)從2013年開始,公司以成都做網(wǎng)站、網(wǎng)站建設(shè)、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶近千家,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風格,為不同客戶提供各種風格的特色服務(wù)。

C# Socket異步通訊客戶端之主程序:

  1. using System;

  2. using System.Net;

  3. using System.Net.Sockets;

  4. using System.Threading;

  5. using System.Text;

  6. // State object for receiving data from remote device.

  7. public class StateObject {

  8. // Client socket.

  9. public Socket workSocket = null;

  10. // Size of receive buffer.

  11. public const int BufferSize = 256;

  12. // Receive buffer.

  13. public byte[] buffer = new byte[BufferSize];

  14. // Received data string.

  15. public StringBuilder sb = new StringBuilder();

  16. }

  17. public class AsynchronousClient {

  18. // The port number for the remote device.

  19. private const int port = 11000;

  20. // ManualResetEvent instances signal completion.

  21. private static ManualResetEvent connectDone =

  22. new ManualResetEvent(false);

  23. private static ManualResetEvent sendDone =

  24. new ManualResetEvent(false);

  25. private static ManualResetEvent receiveDone =

  26. new ManualResetEvent(false);

  27. // The response from the remote device.

  28. private static String response = String.Empty;

  29. private static void StartClient() {
    // Connect to a remote device.

  30.  

  31. try {// Establish the remote endpoint for the socket.
    // The name of the
    // remote device is "host.contoso.com".
    IPHostEntry ipHostInfo = DNS.Resolve("host.contoso.com");
    IPAddress ipAddress = ipHostInfo.AddressList[0];
    IPEndPoint remoteEP = new IPEndPoint(ipAddress, port); 

  32. // 生成一個TCP/IP socket.  

  33. Socket client = new Socket(AddressFamily.InterNetwork,  

  34. SocketType.Stream, ProtocolType.Tcp);  

  35.  

  36. // 與目標終端連接.  

  37. client.BeginConnect(remoteEP,  

  38. new AsyncCallback(ConnectCallback), client);  

  39. //等待,直到連接程序完成。在ConnectCallback中適當位置有connecDone.Set()語句  

  40. connectDone.WaitOne();  

  41.  

  42. // 發(fā)送數(shù)據(jù)到遠程終端.  

  43. Send(client, "This is a test<EOF>");  

  44. sendDone.WaitOne();  

  45.  

  46. // 接收返回數(shù)據(jù).  

  47. Receive(client);  

  48. receiveDone.WaitOne();  

  49.  

  50. // Write the response to the console.  

  51. Console.WriteLine("Response received : {0}", response);  

  52.  

  53. // Release the socket.  

  54. client.Shutdown(SocketShutdown.Both);  

  55. client.Close();  

  56. return 0;  

C# Socket異步通訊客戶端之連接部分Callback:

  1. private static void ConnectCallback(IAsyncResult ar)  

  2. {  

  3.  

  4. // 從state對象獲取socket.  

  5. Socket client = (Socket)ar.AsyncState;  

  6.  

  7. // 完成連接.  

  8. client.EndConnect(ar);  

  9.  

  10. Console.WriteLine("Socket connected to {0}",  

  11. client.RemoteEndPoint.ToString());  

  12.  

  13. // 連接已完成,主線程繼續(xù).  

  14. connectDone.Set();

  15. } catch (Exception e) {

  16. Console.WriteLine(e.ToString());

  17. }

  18. }

C# Socket異步通訊客戶端之數(shù)據(jù)接收:

  1.    private static void Receive(Socket client)  

  2. try {{  

  3.  

  4. // 構(gòu)造容器state.  

  5. StateObject state = new StateObject();  

  6. state.workSocket = client;  

  7.  

  8. // 從遠程目標接收數(shù)據(jù).  

  9. client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,  

  10. new AsyncCallback(ReceiveCallback), state);  

  11. } catch (Exception e) {

  12. Console.WriteLine(e.ToString());

  13. }
    }

  14.  

  15. private static void ReceiveCallback(IAsyncResult ar)  

  16. {  

  17.  

  18. // 從輸入?yún)?shù)異步state對象中獲取state和socket對象  

  19. StateObject state = (StateObject)ar.AsyncState;  

  20. Socket client = state.workSocket;  

  21.  

  22. //從遠程設(shè)備讀取數(shù)據(jù)  

  23. int bytesRead = client.EndReceive(ar);  

  24.  

  25. if (bytesRead > 0)  

  26. {  

  27. // 有數(shù)據(jù),存儲.  

  28. state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));  

  29.  

  30. // 繼續(xù)讀取.  

  31. client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,  

  32. new AsyncCallback(ReceiveCallback), state);  

  33. }  

  34. else 

  35. {  

  36. // 所有數(shù)據(jù)讀取完畢.  

  37. if (state.sb.Length > 1)  

  38. {  

  39. response = state.sb.ToString();  

  40. }  

  41. // 所有數(shù)據(jù)讀取完畢的指示信號.  

  42. receiveDone.Set();  

  43. }  

  44. } catch (Exception e) {

  45. Console.WriteLine(e.ToString());

  46. }

  47. }

C# Socket異步通訊客戶端之發(fā)送數(shù)據(jù):

  1. private static void Send(Socket client, String data)  

  2. {  

  3. // 格式轉(zhuǎn)換.  

  4. byte[] byteData = Encoding.ASCII.GetBytes(data);  

  5.  

  6. // 開始發(fā)送數(shù)據(jù)到遠程設(shè)備.  

  7. client.BeginSend(byteData, 0, byteData.Length, 0,  

  8. new AsyncCallback(SendCallback), client);  

  9. }   

  10. private static void SendCallback(IAsyncResult ar)  

  11. {  

  12.  

  13. // 從state對象中獲取socket  

  14. Socket client = (Socket)ar.AsyncState;  

  15.  

  16. // 完成數(shù)據(jù)發(fā)送.  

  17. int bytesSent = client.EndSend(ar);  

  18. Console.WriteLine("Sent {0} bytes to server.", bytesSent);  

  19.  

  20. // 指示數(shù)據(jù)已經(jīng)發(fā)送完成,主線程繼續(xù).  

  21. sendDone.Set();  

  22. } catch (Exception e) {

  23. Console.WriteLine(e.ToString());

  24. }

  25. }

  26. public static int Main(String[] args) {

  27. StartClient();

  28. return 0;

  29. }

  30. }

關(guān)于C#中怎么利用Socket實現(xiàn)異步通訊就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網(wǎng)頁題目:C#中怎么利用Socket實現(xiàn)異步通訊
本文鏈接:http://aaarwkj.com/article44/pccpee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站收錄、網(wǎng)站改版、面包屑導航、域名注冊、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
亚洲中文字幕乱码丝袜在线精品| 久久国产综合精品电影| 成人av影视中文字幕| 国产成人亚洲欧美激情| 亚洲91无专砖码高清观看| 亚洲av乱码久久精品蜜桃| 91在线国内在线观看| 日本少妇入口一区二区| 精品一区无遮挡免费网站| 99久久成人国产精品免费 | 日本熟妇色在线视频不卡| 国产亚洲加勒比久久精品| 国产视频在线一区二区| 一级片一区二区中文字幕| 白白色最新福利在线视频观看| 日韩欧美中文字幕区| 亚洲性视频日韩性视频| 丰满少妇在线观看网站| 综合激情丁香久久狠狠| 伊人性伊人情亚洲综合| 亚洲欧美一区二区中文字幕| 婷婷91麻豆精品国产人妻| 日本加勒比一本在线观看| 亚洲二区三区四区在线| 人妻少妇久久久久久69| 青青草原三区在线播放| 人人妻夜夜天天俺去添噜| 亚洲国产成人不卡高清麻豆| 九九久久亚洲av成人乱片| 国产精品粗又长一区| 国产精品亚洲精品日韩在线| 亚洲av日韩专区在线观看| 91在线免费观看国产精品| 久久日韩精品人妻一区二区| 日本不卡一区二区在线视频| 日韩av高清在线播放| 精品女厕一区二区三区| 亚洲av色男人天堂网| 97国产精品视频在线观看| 日韩亚洲一区在线观看| 欧美丰满老妇性猛交|