private void FrmMain_Load(object sender, EventArgs e)
        {
            FrmMain.CheckForIllegalCrossThreadCalls = false;
            FrmMain.Data = new Thread(new ThreadStart(this.DataStart));
            FrmMain.Data.Start();
             
        }
窗口启动,开启data线程;
  public void DataStart()
        {
            while (true)
            {
                try
                {
                    if (client.Connected)
                    {
                       
                        NetworkStream ns = new NetworkStream(client);
                        StreamReader reader = new StreamReader(ns);                        string result = reader.ReadLine();
                        byte[] u = utf8.GetBytes(result);
                        byte[] gb = Encoding.Convert(utf8, gb2312, u);
                        string sGb = gb2312.GetString(gb);
      }
     }
    }
}上面的方法来接受服务端的信息,请高手看看那边出错了.while (true)
            {
                try
                {
                    if (client.Connected)
                    {
 NetworkStream ns = new NetworkStream(client);
                        StreamReader reader = new StreamReader(ns);这边调试时ns会出异常.IOexception

解决方案 »

  1.   

    ns是空的.但是clinet不是空的.把clinet!=null换成clinet.connected,也还是会有这个异常
      

  2.   

    NetworkStream ns = new NetworkStream(client);
    if(ns!=null)
    {
                            StreamReader reader = new StreamReader(ns);                        string result = reader.ReadLine();
                            byte[] u = utf8.GetBytes(result);
                            byte[] gb = Encoding.Convert(utf8, gb2312, u);
                            string sGb = gb2312.GetString(gb);
    }断点跟一下,看看ns 为什么为null
      

  3.   

    NetworkStream ns = new NetworkStream(client);
    是否获取到值,应该是IO问题
      

  4.   

    socket 未连接。或socket 的 SocketType 属性不是 SocketType.Stream。- 或 - socket 处于非阻止状态。
      

  5.   

    弱弱的问一句 你那client对象是什么?socket还是TcpClient
      

  6.   

     client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    这个是定义的socket
      

  7.   

    为什么不用TcpClient.GetStream()来获取NetworkStream?
    不过你还是用TcpClient.Client来接收发送数据的好,NetworkStream没有直接操作Socket的好。