首页 新闻 会员 周边 捐助

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

0
[已解决问题] 解决于 2010-09-27 13:04

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

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

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:38
提问于:2010-09-13 11:11
< >
分享
最佳答案
0

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

南桥一梦 | 初学一级 |园豆:147 | 2010-09-14 18:59
其他回答(1)
0

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

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

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

xiafeng | 园豆:205 (菜鸟二级) | 2010-09-13 14:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册