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

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

C#中怎么利用Socket實現(xiàn)心跳

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

10年積累的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有河間免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

Server端代碼:

class Program{  static SocketListener listener;   public static void Main(string[] args)  {    //實例化Timer類,設(shè)置間隔時間為5000毫秒;    System.Timers.Timer t = new System.Timers.Timer(5000);    t.Elapsed += new System.Timers.ElapsedEventHandler(CheckListen);    //到達(dá)時間的時候執(zhí)行事件;     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("連接數(shù):" + 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() + "]連接關(guān)閉...");          break;        }         data += Encoding.UTF8.GetString(bytes, 0, bytesRec);        ReceiveText("收到消息:" + data);         string sendStr = "服務(wù)端已經(jīng)收到信息!";        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);      //創(chuàng)建一個Socket類      Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);      s.Bind(ipend);//綁定2000端口      s.Listen(0);//開始監(jiān)聽       ReceiveText("啟動Socket監(jiān)聽...");       while (true)      {        Socket connectionSocket = s.Accept();//為新建連接創(chuàng)建新的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和端口轉(zhuǎn)化為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);//創(chuàng)建一個Socket     try    {      c.Connect(ipend);//連接到服務(wù)器       Console.WriteLine("連接到Socket服務(wù)端...");       Console.WriteLine("發(fā)送消息到服務(wù)端...");      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);//從服務(wù)器端接受返回信息      recvStr += Encoding.UTF8.GetString(recvBytes, 0, bytes);       Console.WriteLine("服務(wù)器返回信息:" + recvStr);    }    catch (ArgumentNullException ex1)    {      Console.WriteLine("ArgumentNullException:{0}", ex1);    }    catch (SocketException ex2)    {      Console.WriteLine("SocketException:{0}", ex2);    }     Console.ReadKey();  }}

以上就是C#中怎么利用Socket實現(xiàn)心跳,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


名稱欄目:C#中怎么利用Socket實現(xiàn)心跳
分享網(wǎng)址:http://weahome.cn/article/gsgiso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部