const int BufferSize = 8192;                   
                    byte[] buffer = new byte[BufferSize];
                    string bytesRead = "";
                    int rd = 0;
                    lock (streamToServer)
                    {
                        rd = streamToServer.Read(buffer, 0, BufferSize);
                    }
                    for (int i = 0; i < rd; i++)
                    {
                        bytesRead += buffer[i].ToString("X2") + " ";//转换16进制
                    }
                    textBox5.Text = bytesRead.ToString();
信息发送正确的话server上会有显示client有返回值,如果发送错误信息给server直接卡死。server不显示发送内容client没有返回。求教解决卡死问题。

解决方案 »

  1.   

    你的streamToServer接受数据接收的全么,应该循环接收吧
      

  2.   

    全的呀。就是无返回数据的话 会卡死,发送给server的数据 server也不显示
      

  3.   

    rd = streamToServer.Read(buffer, 0, BufferSize);
     rd为0 ,说明断开连接。卡死不知道什么意思, 是否是因为单线程,  循环接受的代码不要放到主线程。
    另:string bytesRead = "";
     bytesRead += buffer[i].ToString("X2") + " ";//转换16进制
     
    这种方式不太好, 请换成StringBuilder
      

  4.   

    没有回应 然后程序就没有反应了。server连发送过去的数据都看不到了。发送正确有返回的数据,server会显示,也会回应。
      

  5.   

    你确定发给server的数据,server接受完整吗?你确定rd = streamToServer.Read(buffer, 0, BufferSize);接受的数据是一个完成的数据吗?
      

  6.   

    做个异常处理呗  放try里面
      

  7.   

    Client 没有开监听,跟Server连通实现传输的  试了好多异常处理 还是木有反应
      

  8.   

     F11只能运行到 rd = streamToServer.Read(buffer, 0, BufferSize);
      

  9.   

    F11只能运行到 rd = streamToServer.Read(buffer, 0, BufferSize);这就对了,这是在等待客户端发数据。