C#多线程Socket通讯实例

服务端:

  1. using System;  
  2. using System.Net;  
  3. using System.Net.Sockets;  
  4. using System.Text;  
  5. using System.Threading;  
  6.   
  7. namespace socket2016  
  8. {  
  9.     class Program  
  10.     {  
  11.         static void Main(string[] args)  
  12.         {  
  13.             //服务器端  
  14.             Socket sktltn = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  
  15.             sktltn.Bind(new IPEndPoint(IPAddress.Any, 12345));  
  16.             sktltn.Listen(30);  
  17.             while (true)  
  18.             {  
  19.                 Socket sk = sktltn.Accept();  
  20.                 //ThreadPool.SetMaxThreads(10, 10);  
  21.                 ThreadPool.QueueUserWorkItem(p =>  
  22.                 {  
  23.                     Socket skc = (Socket)sk;  
  24.                     byte[] array = new byte[10240];  
  25.                     int offset = 0;  
  26.                     while (true)  
  27.                     {  
  28.                         int len = skc.Receive(array, offset, array.Length - offset, SocketFlags.None);  
  29.                         if (len == 0)  
  30.                         {  
  31.                             break;  
  32.                         }  
  33.                         offset += len;  
  34.                     }  
  35.                     string content = Encoding.UTF8.GetString(array, 0, offset);  
  36.                     Console.WriteLine("> " + content);  
  37.                 }, sk);  
  38.             }  
  39.         }  
  40.     }  
  41. }  
  42. 客户接收端:
    1. using System;  
    2. using System.Net;  
    3. using System.Net.Sockets;  
    4. using System.Text;  
    5.   
    6. namespace socket2016Client  
    7. {  
    8.     class Program  
    9.     {  
    10.         static void Main(string[] args)  
    11.         {  
    12.             //客户端  
    13.             Console.WriteLine("输入文字,回车发送");  
    14.             while (true)  
    15.             {  
    16.                 string str = Console.ReadLine();  
    17.                 if (str.Length > 0)  
    18.                 {  
    19.                     Socket sktc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  
    20.                     sktc.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345));  
    21.                     byte[] bytes = Encoding.UTF8.GetBytes(str);  
    22.                     int offset = 0;  
    23.                     while ((offset += sktc.Send(bytes, offset, bytes.Length - offset, SocketFlags.None)) < bytes.Length) ;  
    24.                     sktc.Close();  
    25.                 }  
    26.             }  
    27.         }  
    28.     }  
    29. }  
posted @ 2017-04-24 15:27  吴皓杰  阅读(293)  评论(0编辑  收藏  举报