IPHostEntry iph = new IPHostEntry();
            iph = Dns.GetHostByName(Dns.GetHostName());
            string ddd = iph.AddressList[0].ToString();
            
            try
            {
                int port = 2000;
                string host = ddd;
                IPAddress ip = IPAddress.Parse(host);
                IPEndPoint ipe = new IPEndPoint(ip, port);
                informationBox.Text = "服务已开启,正在监听.....";
                TcpListener server = new TcpListener(ip, port);
                server.Start();
                
                client = server.AcceptTcpClient();
                stream = client.GetStream();
                th = new Thread(new ThreadStart(readData));
                th.Start();
                Byte[] data = Encoding.Default.GetBytes("连接成功!");
                stream.Write(data, 0, data.Length);
                
            }
            catch (ArgumentNullException d)
            {
                informationBox.Text = informationBox.Text + "\r\n" + d.Message;
            }
            catch (SocketException d)
            {
                informationBox.Text = informationBox.Text + "\r\n" + d.Message;
            }
代码是这样,可在运行到client = server.AcceptTcpClient();的时候程序好象进入了死循环似的 这怎么解决啊?

解决方案 »

  1.   

    代码是这样,可在运行到client = server.AcceptTcpClient();的时候程序好象进入了死循环似的 这怎么解决啊?这里是同步接收,一直阻塞到第一个连接进来后才会继续往下执行,
    建议使用异步方式侦听
    简单如
    client = server.BeginXXXX();
      

  2.   

    你的这段代码放到线程里...否则 AcceptTcpClient() 会挂起等待客户端连接的.
      

  3.   

      th = new Thread(new ThreadStart(readData)); 
                    th.Start(); 不能放到这里的,要独立出来