为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只甜甜圈 2018-12-06 18:56:45
网上下的例子好想都这样的,比如: 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());                }            }        }
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

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

查看完整回答
反对 回复 2019-01-21
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

用线程池,先创建好一些线程

把accept后的socket放到一个同步队列里面

线程池里面的线程互斥的去取。。。

查看完整回答
反对 回复 2019-01-21
  • 2 回答
  • 0 关注
  • 650 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信