亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中怎么實現一個異步傳輸字符串客戶端

發布時間:2021-07-08 14:28:29 來源:億速云 閱讀:126 作者:Leah 欄目:編程語言

這篇文章給大家介紹C#中怎么實現一個異步傳輸字符串客戶端,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

C#異步傳輸字符串客戶端的實現與服務端類似,我們首先對TcpClient進行一個簡單的包裝,使它的使用更加方便一些,因為它是服務端的客戶,所以我們將類的名稱命名為ServerClient:

public class ServerClient {  private const int BufferSize = 8192;  private byte[] buffer;  private TcpClient client;  private NetworkStream streamToServer;  private string msg = "Welcome to TraceFact.Net!";   //C#異步傳輸字符串客戶端的實現public ServerClient() {  try {  client = new TcpClient();  client.Connect("localhost", 8500);    // 與服務器連接  } catch (Exception ex) {  Console.WriteLine(ex.Message);  return;  }  buffer = new byte[BufferSize];   //C#異步傳輸字符串客戶端的實現// 打印連接到的服務端信息  Console.WriteLine("Server Connected!{0} --> {1}",  client.Client.LocalEndPoint,   client.Client.RemoteEndPoint);   streamToServer = client.GetStream();  }   // 連續發送三條消息到服務端  public void SendMessage(string msg) {   msg = String.Format("[length={0}]{1}",   msg.Length, msg);   for (int i = 0; i <= 2; i++) {  byte[] temp = Encoding.Unicode.GetBytes(msg);     // 獲得緩存  try {  streamToServer.Write(temp, 0, temp.Length);   // 發往服務器  Console.WriteLine("Sent: {0}", msg);  } catch (Exception ex) {  Console.WriteLine(ex.Message);  break;  }  }   //C#異步傳輸字符串客戶端的實現lock (streamToServer) {  AsyncCallback callBack =   new AsyncCallback(ReadComplete);  streamToServer.BeginRead(  buffer, 0, BufferSize, callBack, null);  }  }   public void SendMessage() {  SendMessage(this.msg);  }   // 讀取完成時的回調方法  private void ReadComplete(IAsyncResult ar) {  int bytesRead;   try {  lock (streamToServer) {  bytesRead = streamToServer.EndRead(ar);  }  if (bytesRead == 0) throw new  Exception("讀取到0字節");   string msg = Encoding.Unicode.GetString(buffer, 0, bytesRead);  Console.WriteLine("Received: {0}", msg);  Array.Clear(buffer, 0, buffer.Length);    // 清空緩存,避免臟讀   lock (streamToServer) {  AsyncCallback callBack =   new AsyncCallback(ReadComplete);  streamToServer.BeginRead(buffer,   0, BufferSize, callBack, null);  }  } catch (Exception ex) {   if(streamToServer!=null)  streamToServer.Dispose();  client.Close();   Console.WriteLine(ex.Message);  }  }  //C#異步傳輸字符串客戶端的實現}

在上面的SendMessage()方法中,我們讓它連續發送了三條同樣的消息,這么僅僅是為了測試,因為異步操作同樣會出現上面說過的:服務器將客戶端的請求拆開了的情況。最后我們在Main()方法中創建這個類型的實例,然后調用SendMessage()方法進行測試:

class Client {  static void Main(string[] args) {  ConsoleKey key;   ServerClient client = new ServerClient();  client.SendMessage();   Console.WriteLine("\n\n輸入\"Q\"鍵退出。");  do {  key = Console.ReadKey(true).Key;  } while (key != ConsoleKey.Q);  }  }

關于C#中怎么實現一個異步傳輸字符串客戶端就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通榆县| 乐亭县| 家居| 金门县| 浦东新区| 齐河县| 鸡西市| 通江县| 茌平县| 镇远县| 定州市| 南安市| 习水县| 寻乌县| 邮箱| 汾阳市| 台山市| 报价| 北碚区| 闻喜县| 红安县| 三亚市| 静安区| 长海县| 佛坪县| 仪陇县| 西宁市| 沅陵县| 武宣县| 兴业县| 忻州市| 陆河县| 乐至县| 长葛市| 绥滨县| 房产| 凤凰县| 台东市| 宜州市| 松桃| 嵊泗县|