学习网络编程,从网上找了段代码,现在有这样一个问题-----服务端接受一个连接后,就再也接受不了其他连接了。代码如下:      //1.启动服务
  public Class1()
  {
            string ip = "***.**.**.**";
            int port = 9001;
            IPEndPoint iep = new IPEndPoint(IPAddress.Parse(ip), port);
            Socket socketsmg = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socketsmg.Bind(iep);            socketsmg.Listen(100);
            ThreadDeal deal = new ThreadDeal(socketsmg);
            Thread thread = new Thread(new ThreadStart(deal.Deal));
            thread.IsBackground = true;
            thread.Start();
        }
        //2.sp侦听线程类
        public class ThreadDeal
        {
            Socket server = null;
            Socket client = null;            public ThreadDeal(Socket s)
            {
                server = s;
            }
            public void Deal()
            {                while (true)
                {
                    client = server.Accept();
                    if (client != null)
                    {
                        ThreadRece threadRec = new ThreadRece(client);
                        Thread threadRece = new Thread(new ThreadStart(threadRec.ThreadReceDeal));//在新的线程中接收数据
                        threadRece.IsBackground = true;
                        threadRece.Start();
                    }
                }
            }
        }        //3.接收消息和应答消息线程类
        public class ThreadRece
        {
            Socket client;
            public ThreadRece(Socket input)
            {
                client = input;
            }            public void ThreadReceDeal()
            {                IPEndPoint iep = client.RemoteEndPoint as IPEndPoint;
                MessageBox.Show("客户端套接字:" + iep.Address.ToString() + ":" + iep.Port.ToString());                //do something here.
            }
        }各位帮忙看看

解决方案 »

  1.   

    client = server.Accept();改成Socket client = server.Accept();
      

  2.   

    client已经定义过了啊 在上面
      

  3.   

    你的意思我明白 clien第一次被用了下次就不行了 我按你说的做了 还是不行
      

  4.   

    不应该啊 你调试下client = server.Accept();看看是不是第二个连接来了这句后边的代码还走吗
      

  5.   

    public void Deal()
                {
    socketsmg.Listen(100);                while (true)
                    {
                        client = server.Accept();
                        if (client != null)
                        {
                            ThreadRece threadRec = new ThreadRece(client);
                            Thread threadRece = new Thread(new ThreadStart(threadRec.ThreadReceDeal));//在新的线程中接收数据
                            threadRece.IsBackground = true;
                            threadRece.Start();
                        }
                    }
                }