能不能控制超时??不知客户端发来多少数据,如果没有超时,怎么接收完整的数据,总不能要求客户端,发完数据就关闭吧???

解决方案 »

  1.   

    Indy9中是可以设置,连接的超时时间的.但是在Indy10中好象不行.对于数据的完整性,因为是TCP协议,所以通常是不需要验证的.如果你要验证的话,可以在你传输的数据的末尾加上数据的长度.然后检验长度是否符合要求即可.
      

  2.   

    to killghost(kill--ghost):
    Indy9中在哪里设置?Readln中倒有超时参数,ReadBuffer呢??
    另外,我说的不是“数据的完整性”,而是接收数据的完整性,比如说,发送方发了256个字节的数据,在接收方由于不知道对方发了多少数据,假如说ReadBuffer(buff,200)接收了200个数据,再接收ReadBuffer(buff,200)时,由于只剩下56个字节了,读操作被阻塞住了,怎么办???
      

  3.   

    设置readtimeout属性,TIdTCPServer是多线程,要在连接时(onconnect消息)设置每个连接线程的readtimeout数值。
      

  4.   

    问题是如果这样做,当没有数据时引起Time out Exception啊,而且将Readbuf包含在Try中也没有用,Indy将自动断开连接,我想既要读超时,又要不断开连接,行吗??
      

  5.   

    WriteBuffer(buff,SizeOf(buff));
    ReadBuffer(buff,SizeOf(buff));
    这样应该可以吧