问题: 
当服务器 端发送了一次 数据。 
客户端执行了两次 接收。将产生异常。 但用Try 捕获不到。(估计内部发生死循环)如何在执行 读取数据之前 进行判断,来避免这种情况?请高手给个方法。 谢谢!!socket.Client.Receive(Rece);

解决方案 »

  1.   

    这个是我做的测试 代码。        private void button2_Click(object sender, EventArgs e)
            {
                byte[] Rece = new byte[1024];
                
                try
                {
                        socket.Client.Receive(Rece);                    string sRece = System.Text.ASCIIEncoding.ASCII.GetString(Rece);                    listBox1.Items.Add(sRece);            }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
      

  2.   

    socket.Client.Receive(Rece);如果没接收到信息是不会往下进行的
    你可以断点试试
      

  3.   

    你可以看下异步方法:
    http://blog.csdn.net/zip_xg/article/details/8083809
    使用异步,封装后,会有几个事件,比如接收数据事件、发送完成事件等
      

  4.   

    我还是觉得对于IO操作,用异步方式会比较好,可以调用它的BeginRecive方法托个回调给它,然后就可以不用管了,如果有数据会调你给的回调,然后再EndRecive方法,结束这次异步,然后可以再次打开一个异步