首页 > 编程 > C# > 正文

C#多线程数组模拟socket

2020-01-24 00:35:57
字体:
来源:转载
供稿:网友

本文实例为大家分享了C#多线程数组模拟socket的具体代码,供大家参考,具体内容如下

代码如下

//实例化线程组  Thread[] clientThreads = new Thread[numThread];  for (int i = 0; i < numThread; i++)  {    clientThreads[i] = new Thread(new ParameterizedThreadStart(SocketClient));    clientThreads[i].Start(i);  }

多线程组模拟socket发送

static void SocketClient(object s)  {   //本机地址字符串   string strAddress = (13010001000 + Convert.ToInt32(s)).ToString() + "0";   IPHostEntry ipHost = Dns.Resolve(ipServer);   IPAddress ipAddress = ipHost.AddressList[0];   IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, portServer);   //实例化套接字   Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);   try   {    socketClient.Connect(ipEndPoint);    WriteLine(string.Format("Successfully connected to {0}! Socket Client {1}", socketClient.RemoteEndPoint, strAddress));    byte[] byteAddr = new byte[6];    byteAddr[0] = Convert.ToByte(strAddress.Substring(0, 2), 0x10);    byteAddr[1] = Convert.ToByte(strAddress.Substring(2, 2), 0x10);    byteAddr[2] = Convert.ToByte(strAddress.Substring(4, 2), 0x10);    byteAddr[3] = Convert.ToByte(strAddress.Substring(6, 2), 0x10);    byteAddr[4] = Convert.ToByte(strAddress.Substring(8, 2), 0x10);    byteAddr[5] = Convert.ToByte(strAddress.Substring(10, 2), 0x10);    Packet pkt = new Packet();    byte[] heartpkt = pkt.SendHeartPkt(byteAddr, addrTarget);    int times = timerdata / timerheart;    Random rd = new Random();    while (true)    {     for (int i = 0; i < times - 1; i++)     {      socketClient.Send(heartpkt);      WriteLine(string.Format("Send: {0}! /r/n Socket Client {1}", pkt.BytesToStr(heartpkt), strAddress));      System.Threading.Thread.Sleep(1000 * timerheart);     }     UInt16 i1 = (UInt16)rd.Next(100);     UInt16 i2 = (UInt16)rd.Next(100);     UInt16 i3 = (UInt16)rd.Next(100);     UInt16 i4 = (UInt16)rd.Next(100);     UInt16 i5 = (UInt16)rd.Next(100);     byte[] byte1 = BitConverter.GetBytes(i1);     byte[] byte2 = BitConverter.GetBytes(i2);     byte[] byte3 = BitConverter.GetBytes(i3);     byte[] byte4 = BitConverter.GetBytes(i4);     byte[] byte5 = BitConverter.GetBytes(i5);     byte[] databyte = new byte[10];     databyte[0] = byte1[1];     databyte[1] = byte1[0];     databyte[2] = byte2[1];     databyte[3] = byte2[0];     databyte[4] = byte3[1];     databyte[5] = byte3[0];     databyte[6] = byte4[1];     databyte[7] = byte4[0];     databyte[8] = byte5[1];     databyte[9] = byte5[0];     byte[] datapkt = pkt.SendDataPkt(byteAddr, addrTarget, databyte);     socketClient.Send(datapkt);     WriteLine(string.Format("Send: {0}! /r/n Socket Client {1}", pkt.BytesToStr(datapkt), strAddress));     System.Threading.Thread.Sleep(1000 * timerheart);    }   }   catch (Exception ex)   {    WriteLine(string.Format("Exception:{0} /r/n Socket Client {1}", ex.ToString(), strAddress));   }  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表