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

溫馨提示×

溫馨提示×

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

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

C#中怎么利用Socket實現心跳

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

本篇文章給大家分享的是有關C#中怎么利用Socket實現心跳,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

Server端代碼:

class Program{  static SocketListener listener;   public static void Main(string[] args)  {    //實例化Timer類,設置間隔時間為5000毫秒;    System.Timers.Timer t = new System.Timers.Timer(5000);    t.Elapsed += new System.Timers.ElapsedEventHandler(CheckListen);    //到達時間的時候執行事件;     t.AutoReset = true;    t.Start();     listener = new SocketListener();    listener.ReceiveTextEvent += new SocketListener.ReceiveTextHandler(ShowText);    listener.StartListen();     Console.ReadKey();  }   private static void ShowText(string text)  {    Console.WriteLine(text);  }   private static void CheckListen(object sender, System.Timers.ElapsedEventArgs e)  {    if (listener != null && listener.Connection != null)    {      Console.WriteLine("連接數:" + listener.Connection.Count.ToString());    }  }} public class Connection{  Socket _connection;   public Connection(Socket socket)  {    _connection = socket;  }   public void WaitForSendData(object connection)  {    try    {      while (true)      {        byte[] bytes = new byte[1024];        string data = "";         //等待接收消息        int bytesRec = this._connection.Receive(bytes);         if (bytesRec == 0)        {          // ReceiveText("客戶端[" + _connection.RemoteEndPoint.ToString() + "]連接關閉...");          break;        }         data += Encoding.UTF8.GetString(bytes, 0, bytesRec);        ReceiveText("收到消息:" + data);         string sendStr = "服務端已經收到信息!";        byte[] bs = Encoding.UTF8.GetBytes(sendStr);        _connection.Send(bs, bs.Length, 0);      }    }    catch (Exception)    {      ReceiveText("客戶端[" + _connection.RemoteEndPoint.ToString() + "]連接已斷開...");      Hashtable hConnection = connection as Hashtable;      if (hConnection.Contains(_connection.RemoteEndPoint.ToString()))      {        hConnection.Remove(_connection.RemoteEndPoint.ToString());      }    }  }   public delegate void ReceiveTextHandler(string text);  public event ReceiveTextHandler ReceiveTextEvent;  private void ReceiveText(string text)  {    if (ReceiveTextEvent != null)    {      ReceiveTextEvent(text);    }  }} public class SocketListener{  public Hashtable Connection = new Hashtable();   public void StartListen()  {  Agine:    try    {      //端口號、IP地址      //int port = 8889;      //string host = "127.0.0.1";      //IPAddress ip = IPAddress.Parse(host);      //IPEndPoint ipe = new IPEndPoint(ip, port);      string ip = string.Empty;      System.Net.IPHostEntry IpEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());      for (int i = 0; i != IpEntry.AddressList.Length; i++)      {        if (!IpEntry.AddressList[i].IsIPv6LinkLocal)        {          ip = IpEntry.AddressList[i].ToString();        }      }      IPEndPoint ipend = new IPEndPoint(IPAddress.Parse(ip), 6000);      //創建一個Socket類      Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);      s.Bind(ipend);//綁定2000端口      s.Listen(0);//開始監聽       ReceiveText("啟動Socket監聽...");       while (true)      {        Socket connectionSocket = s.Accept();//為新建連接創建新的Socket         ReceiveText("客戶端[" + connectionSocket.RemoteEndPoint.ToString() + "]連接已建立...");         Connection gpsCn = new Connection(connectionSocket);        gpsCn.ReceiveTextEvent += new Connection.ReceiveTextHandler(ReceiveText);         Connection.Add(connectionSocket.RemoteEndPoint.ToString(), gpsCn);         //在新線程中啟動新的socket連接,每個socket等待,并保持連接        Thread thread = new Thread(gpsCn.WaitForSendData);        thread.Name = connectionSocket.RemoteEndPoint.ToString();        thread.Start(Connection);      }    }    catch (ArgumentNullException ex1)    {      ReceiveText("ArgumentNullException:" + ex1);    }    catch (SocketException ex2)    {      ReceiveText("SocketException:" + ex2);    }     goto Agine;  }   public delegate void ReceiveTextHandler(string text);  public event ReceiveTextHandler ReceiveTextEvent;  private void ReceiveText(string text)  {    if (ReceiveTextEvent != null)    {      ReceiveTextEvent(text);    }  }}

Client端代碼:

class Program{  static void Main(string[] args)  {    Socket c;     //int port = 4029;    // 避免使用127.0.0.1,我在本機測試是不能運行的    //string host = "127.0.0.1";    //IPAddress ip = IPAddress.Parse(host);    //IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口轉化為IPEndPoint實例    string ip = string.Empty;    System.Net.IPHostEntry IpEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());    for (int i = 0; i != IpEntry.AddressList.Length; i++)    {      if (!IpEntry.AddressList[i].IsIPv6LinkLocal)      {        ip = IpEntry.AddressList[i].ToString();      }    }    IPEndPoint ipend = new IPEndPoint(IPAddress.Parse(ip), 6000);     c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//創建一個Socket     try    {      c.Connect(ipend);//連接到服務器       Console.WriteLine("連接到Socket服務端...");       Console.WriteLine("發送消息到服務端...");      string sendStr = "m s g";      byte[] bs = Encoding.UTF8.GetBytes(sendStr);      c.Send(bs, bs.Length, 0);       string recvStr = "";      byte[] recvBytes = new byte[1024];      int bytes;      bytes = c.Receive(recvBytes, recvBytes.Length, 0);//從服務器端接受返回信息      recvStr += Encoding.UTF8.GetString(recvBytes, 0, bytes);       Console.WriteLine("服務器返回信息:" + recvStr);    }    catch (ArgumentNullException ex1)    {      Console.WriteLine("ArgumentNullException:{0}", ex1);    }    catch (SocketException ex2)    {      Console.WriteLine("SocketException:{0}", ex2);    }     Console.ReadKey();  }}

以上就是C#中怎么利用Socket實現心跳,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

慈利县| 安泽县| 四平市| 娄烦县| 子洲县| 宝丰县| 镇沅| 舒城县| 周至县| 吉水县| 织金县| 彰化市| 壤塘县| 蒙自县| 平安县| 松桃| 北票市| 灌云县| 清水河县| 新安县| 始兴县| 祁门县| 永济市| 清河县| 甘泉县| 景德镇市| 沁阳市| 武邑县| 武定县| 黄山市| 门源| 永寿县| 文化| 赤壁市| 宣汉县| 营口市| 从化市| 重庆市| 穆棱市| 日照市| 揭东县|