猿问

socket服务器端需要给每个连接的客户端启动一个线程吗

网上下的例子好想都这样的,比如:

private void StartListening()
        {

            //IPAddress ipAddress = Dns.Resolve(Dns.GetHostName()).AddressList[0];
            IPAddress ipAddress = IPAddress.Parse("courageweb.gicp.net");

            label1.Text = ipAddress.ToString();
            IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, listenport);

            listener = new TcpListener(ipLocalEndPoint);
            listener.Start();
            while(true)
            {
                try
                {
                    Socket s = listener.AcceptSocket();//接收一个套接字
                    clientsocket = s;//赋值给clientsocket
                    clientservice = new Thread(new ThreadStart(ServiceClient));//为新进client服务建立线程
                    clientservice.Start();//线程开始
                }
                catch (Exception e)//如果出现异常则打控制台打印到屏幕
                {
                    Console.WriteLine(e.ToString());
                }
            }
        }

一只甜甜圈
浏览 652回答 2
2回答

HUWWW

用异步Socket,性能更好,也不需要很多的线程。

慕侠2389804

用线程池,先创建好一些线程 把accept后的socket放到一个同步队列里面 线程池里面的线程互斥的去取。。。
随时随地看视频慕课网APP
我要回答