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



  • 相关阅读:
    Android 画布绘图
    Android 4.2.2原生Launcher修改使之可以运行过程小结
    canvas的translate、scale、rotate等方法
    WorkSpace介绍
    Libgdx New 3D API 教程之 -- 加载3D场景的背后-第二部分
    Libgdx New 3D API 教程之 -- 使用Libgdx加载模型
    LibGdx----Texture, TextureRegion, SpriteBatch
    libgdx学习之Camera
    Java伪代码
    读大道至简之感
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234115.html
Copyright © 2011-2022 走看看