clientstocket = new TcpClient(textBox1.Text, serverport);
 ns = clientstocket.GetStream();
  sr = new StreamReader(ns);                Byte[] buffer = new Byte[1024];
                ns.Read(buffer, 0, buffer.Length);
               MessageBox.Show("aaa");
程序运行到ns.Read(buffer, 0, buffer.Length);后就不往后执行了。
以前用这个都接收得到数据,现在不知道为什么卡着了。

解决方案 »

  1.   

    服务端有发数据的               MessageBox.Show("bbb");
                    Byte[] buffer = new Byte[1024];
                    ns.Read(buffer, 0, buffer.Length);
                    MessageBox.Show("DDD");
    客户端只弹出个bbb的窗口
      

  2.   

    因为这个Read是阻塞的,读不到数据就不会返回。因此最好先用NetworkStream.DataAvaiable检查一下。
      

  3.   

    用NetworkStream.DataAvaiable检查没有收到数据,应该怎么办啊。
      

  4.   

    int i = 0;
    while (stream.DataAvailable == 0)
    {
    Thread.Sleep(500);
    i++;
    if (i == 5)
    {
    throw new Exception("timeout");
    }
    }
    stream.Read****();
      

  5.   

    为什么我的DataAvailable 为false CanRead却为true呢?程序运行到Read()的时候卡住了
      

  6.   

    CanRead是用来表示这个流自身属性的。作为TCP的流,一定是可写可读的,所以CanRead肯定是true了。