IdTcpClient可能存在丢失数据问题,indy9.0.18及10.5.7(8)都存在,通过抓包工具wireshark, sniffer pro看数据是到达的。
传输的是视频数据,数据量大.是否有办法控制?

解决方案 »

  1.   

    只是简单ReadBuffer然后对数据进行分析,未做其他处理,比如解码。
      

  2.   

    用socket吧,出了问题自己可以调调
      

  3.   

    实在不行只有直接使用win socket.
      

  4.   

    tcp是不会丢包的,如果出现所谓的丢包,那还是程序没有处理好。
      

  5.   

    不是怀疑TCP丢包,是怀疑INDY控件是否存在bug
      

  6.   

    IdTCPClient的逻辑相对比较简单,这个的可能性也不太大。
      

  7.   

    也许是嵌入式系统发出的数据有误,但win上抓包没发现这种问题,虽然有几个重传包,这个也应该是协议栈处理的事,不可能到应用层去。
    目前是idtcpClient上一个线程读ReadBytes视频数据,另一个线程发送音频数据给对方。
    这样的情况在indy10.5.7上导致读出的读出问题有问题。难道不能一个线程读,一个线程写?看了下是两个不同的缓冲,也不至于这样。
      

  8.   

    补充:indy10.5.7下很快出现读出的数据存在问题,导致无法分析。更加奇怪的问题是,TCP是流式的,那么既然数据出问题了(也许错位),后续的数据就不可能正常了(起码正常的概率很小),但过几分钟或者时间长点数据又正常了。这些都是win上的客户端和设备通过tcp通讯产生的。非常矛盾的是,怀疑设备,但出问题后分析几次抓包数据又正常。