当我设置了ReadTimeout后,用Read去读数据,如果碰到超时情况时(触发IOException)后。下次再去读时,不管有没有数据,没有延时,就超时(触发IOException),不知道什么原因,我用的是VS2005。

解决方案 »

  1.   

    你用的是serialport组件吗?不管怎样,遇到超时的情况,应该要处理异常恢复到正常接收状态。如果用serialport组件进行串口通信开发,应该用DataReceived来触发一个线程去读送达端口听数据。
      

  2.   

    什么readtimeout?你出现异常后,要用 try
    {
    }
    catch
    {
    处理异常
    }
    finally
    {
    一定要把你的IO关闭掉
    }
      

  3.   

    不是!是socket通信private void sendrfiddata() 

      string receiveData = ""; 
      string carband = textBox2.Text;    tcpClient2.ReceiveTimeout = 1000;    senddata.WriteLine("entrybalance," + carband); 
        senddata.Flush();    try 
       { 
        byte[] Data = new Byte[400]; 
        Int32 bytes = ns.Read(Data, 0, Data.Length); 
        receiveData = Encoding.Default.GetString(Data, 0, bytes);    } 
    catch (Exception e) 
    {}就是我向服务发送一条数据的时候,返回超过1秒的时候,就自动放弃者条数据。但如果还有超时的数据,继续放弃数据。如果没有
    超时的数据,则可以正常接收数据
      

  4.   

    http://topic.csdn.net/t/20020703/11/846238.html和楼主一模一样的问题,这是N年前的问答。
      

  5.   

    看了!但是是有关闭 tcpClient.Close();我不希望关闭连接的