C#线程池多线程Socket通讯 服务器端和客户端示例

来源:互联网 发布:水果店会员卡软件 编辑:程序博客网 时间:2024/05/21 08:41
using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;namespace socket2016{    class Program    {        static void Main(string[] args)        {            //服务器端            Socket sktltn = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            sktltn.Bind(new IPEndPoint(IPAddress.Any, 12345));            sktltn.Listen(30);            while (true)            {                Socket sk = sktltn.Accept();                //ThreadPool.SetMaxThreads(10, 10);                ThreadPool.QueueUserWorkItem(p =>                {                    Socket skc = (Socket)sk;                    byte[] array = new byte[10240];                    int offset = 0;                    while (true)                    {                        int len = skc.Receive(array, offset, array.Length - offset, SocketFlags.None);                        if (len == 0)                        {                            break;                        }                        offset += len;                    }                    string content = Encoding.UTF8.GetString(array, 0, offset);                    Console.WriteLine("> " + content);                }, sk);            }        }    }}

using System;using System.Net;using System.Net.Sockets;using System.Text;namespace socket2016Client{    class Program    {        static void Main(string[] args)        {            //客户端            Console.WriteLine("输入文字,回车发送");            while (true)            {                string str = Console.ReadLine();                if (str.Length > 0)                {                    Socket sktc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                    sktc.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345));                    byte[] bytes = Encoding.UTF8.GetBytes(str);                    int offset = 0;                    while ((offset += sktc.Send(bytes, offset, bytes.Length - offset, SocketFlags.None)) < bytes.Length) ;                    sktc.Close();                }            }        }    }}

0 0
原创粉丝点击