真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#中怎么實現(xiàn)異步套接字

今天就跟大家聊聊有關(guān)C#中怎么實現(xiàn)異步套接字,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)服務(wù)項目包括沙市網(wǎng)站建設(shè)、沙市網(wǎng)站制作、沙市網(wǎng)頁制作以及沙市網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,沙市網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到沙市省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

下面的C#異步套接字實現(xiàn)實例程序創(chuàng)建一個連接到

C#異步套接字在服務(wù)器的示例 下面的示例程序創(chuàng)建一個接收來自客戶端的連接請求的服務(wù)器。該服務(wù)器是用C#異步套接字生成的

因此在等待來自客戶端的連接時不掛起服務(wù)器應(yīng)用程序的執(zhí)行。該應(yīng)用程序接收來自客戶端的字符串

在控制臺顯示該字符串,然后將該字符串回顯到客戶端。來自客戶端的字符串必須包含字符串“”

以發(fā)出表示消息結(jié)尾的信號。

using System;       using System.Net;       using System.Net.Sockets;       using System.Text;       using System.Threading;       // State object for reading client data asynchronously       public class StateObject {       // Client socket.       public Socket workSocket = null;       // Size of receive buffer.       public const int BufferSize = 1024;       // Receive buffer.       public byte[] buffer = new byte[BufferSize];       // Received data string.       public StringBuilder sb = new StringBuilder();       }       public class AsynchronousSocketListener {       // Thread signal.       public static ManualResetEvent allDone =       new ManualResetEvent(false);       public AsynchronousSocketListener() {       }       public static void StartListening() {       // Data buffer for incoming data.       byte[] bytes = new Byte[1024];       // Establish the local endpoint for the socket.       // The DNS name of the computer       // running the listener is "host.contoso.com".       IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());       IPAddress ipAddress = ipHostInfo.AddressList[0];       IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);       // Create a TCP/IP socket.       Socket listener = new Socket(AddressFamily.InterNetwork,       SocketType.Stream, ProtocolType.Tcp );       // Bind the socket to the local       //endpoint and listen for incoming connections.       try {       listener.Bind(localEndPoint);       listener.Listen(100);       while (true) {       // Set the event to nonsignaled state.       allDone.Reset();       // Start an asynchronous socket to listen for connections.       Console.WriteLine("Waiting for a connection...");       listener.BeginAccept(       new AsyncCallback(AcceptCallback),       listener );       // Wait until a connection is made before continuing.       allDone.WaitOne();       }       } catch (Exception e) {       Console.WriteLine(e.ToString());       }       Console.WriteLine("\nPress ENTER to continue...");       Console.Read();       }       public static void AcceptCallback(IAsyncResult ar) {       // Signal the main thread to continue.       allDone.Set();       // Get the socket that handles the client request.       Socket listener = (Socket) ar.AsyncState;       Socket handler = listener.EndAccept(ar);       // Create the state object.       StateObject state = new StateObject();       state.workSocket = handler;       handler.BeginReceive( state.buffer,       0, StateObject.BufferSize, 0,       new AsyncCallback(ReadCallback), state);       }       public static void ReadCallback(IAsyncResult ar) {       String content = String.Empty;       // Retrieve the state object and the handler socket       // from the asynchronous state object.       StateObject state = (StateObject) ar.AsyncState;       Socket handler = state.workSocket;       // Read data from the client socket.       int bytesRead = handler.EndReceive(ar);       if (bytesRead > 0) {       // There might be more data, so store the data received so far.       state.sb.Append(Encoding.ASCII.GetString(       state.buffer,0,bytesRead));       // Check for end-of-file tag. If it is not there, read       // more data.       content = state.sb.ToString();       if (content.IndexOf("< EOF>") > -1) {       // All the data has been read from the       // client. Display it on the console.       Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",       content.Length, content );       // Echo the data back to the client.       Send(handler, content);       } else {       // Not all data received. Get more.       handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,       new AsyncCallback(ReadCallback), state);       }       }       }       private static void Send(Socket handler, String data) {       // Convert the string data to byte data using ASCII encoding.       byte[] byteData = Encoding.ASCII.GetBytes(data);       // Begin sending the data to the remote device.       handler.BeginSend(byteData, 0, byteData.Length, 0,       new AsyncCallback(SendCallback), handler);       }       private static void SendCallback(IAsyncResult ar) {       try {       // Retrieve the socket from the state object.       Socket handler = (Socket) ar.AsyncState;       // Complete sending the data to the remote device.       int bytesSent = handler.EndSend(ar);       Console.WriteLine("Sent {0} bytes to client.", bytesSent);       handler.Shutdown(SocketShutdown.Both);       handler.Close();       } catch (Exception e) {       Console.WriteLine(e.ToString());       }       }       public static int Main(String[] args) {       StartListening();       return 0;       }       }

看完上述內(nèi)容,你們對C#中怎么實現(xiàn)異步套接字有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文標(biāo)題:C#中怎么實現(xiàn)異步套接字
文章轉(zhuǎn)載:
http://weahome.cn/article/gsheod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部