程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# Socket異步通訊客戶端之發送數據

C# Socket異步通訊客戶端之發送數據

編輯:C#入門知識

C# Socket異步通訊客戶端之主程序: [c-sharp] # public static int Main(String[] args)     # {     #     # IPAddress ipAddress = IPAddress.Parse("192.168.1.104");     # int port = 20000;     # IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);     #     # // 生成一個TCP/IP socket.     # Socket client = new Socket(AddressFamily.InterNetwork,     # SocketType.Stream, ProtocolType.Tcp);     #     # // 與目標終端連接.     # client.BeginConnect(remoteEP,     # new AsyncCallback(ConnectCallback), client);     # //等待,直到連接程序完成。在ConnectCallback中適當位置有connecDone.Set()語句     # connectDone.WaitOne();     #     # // 發送數據到遠程終端.     # Send(client, "This is a test<EOF>");     # sendDone.WaitOne();     #     # // 接收返回數據.     # Receive(client);     # receiveDone.WaitOne();     #     # // Write the response to the console.     # Console.WriteLine("Response received : {0}", response);     #     # // Release the socket.     # client.Shutdown(SocketShutdown.Both);     # client.Close();     #     # return 0;     #     C# Socket異步通訊客戶端之連接部分Callback: [c-sharp]  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. // 連接已完成,主線程繼續.     14. connectDone.Set();     15. }    C# Socket異步通訊客戶端之數據接收: [c-sharp] # private static void Receive(Socket client)     # {     #     # // 構造容器state.     # StateObject state = new StateObject();     # state.workSocket = client;     #     # // 從遠程目標接收數據.     # client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,     # new AsyncCallback(ReceiveCallback), state);     #        # }     #     # private static void ReceiveCallback(IAsyncResult ar)     # {     #     # // 從輸入參數異步state對象中獲取state和socket對象     # StateObject state = (StateObject)ar.AsyncState;     # Socket client = state.workSocket;     #     # //從遠程設備讀取數據     # int bytesRead = client.EndReceive(ar);     #     # if (bytesRead > 0)     # {     # // 有數據,存儲.     # state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));     #     # // 繼續讀取.     # client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,     # new AsyncCallback(ReceiveCallback), state);     # }     # else    # {     # // 所有數據讀取完畢.     # if (state.sb.Length > 1)     # {     # response = state.sb.ToString();     # }     # // 所有數據讀取完畢的指示信號.     # receiveDone.Set();     # }     #     # }    www.2cto.com C# Socket異步通訊客戶端之發送數據: [c-sharp] view plaincopy   www.2cto.com  1. private static void Send(Socket client, String data)      2. {      3. // 格式轉換.      4. byte[] byteData = Encoding.ASCII.GetBytes(data);      5.      6. // 開始發送數據到遠程設備.      7. client.BeginSend(byteData, 0, byteData.Length, 0,      8. new AsyncCallback(SendCallback), client);      9. }     10.     11. private static void SendCallback(IAsyncResult ar)     12. {     13.     14. // 從state對象中獲取socket     15. Socket client = (Socket)ar.AsyncState;     16.     17. // 完成數據發送.     18. int bytesSent = client.EndSend(ar);     19. Console.WriteLine("Sent {0} bytes to server.", bytesSent);     20.     21. // 指示數據已經發送完成,主線程繼續.     22. sendDone.Set();     23.     24. }   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved