zoukankan      html  css  js  c++  java
  • C#线程池多线程Socket通讯 服务器端和客户端示例

    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();
                    }
                }
            }
        }
    }
    



  • 相关阅读:
    Spring Boot中Bean对象的核心特性及依赖注入分析
    Spring Boot快速入门
    throw和throws
    Spring框架中的一些常见注释
    关于maven的介绍并创建一个简单的maven工程
    luffyapi~settings
    爬虫~requests
    爬虫~scrapy1
    爬虫~scrapy
    爬虫~选择器
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234115.html
Copyright © 2011-2022 走看看