我是靠谱客的博主 温暖饼干,这篇文章主要介绍为什么TIdTcpClient总是无法接收服务器发来的数据?,现在分享给大家,希望可以做个参考。

来源:原创

作者:为什么TIdTcpClient总是无法接收服务器发来的数据? - xiaoma - xiaoxiaoma的博客

请确认服务器发来的数据量达到了TIdTcpClient的读取方法中指定的数据量,比如:

FStr := IdTCPClient1.ReadString(1024);

如果服务器发来的数据不够1024字节,则IdTCPClient1不会从Read过程中返回数据,直到服务器发来的数据达到或超过1024后,Read过程才会返回1024字节的数据。这样有时会让人感觉好像IdTCPClient无法接收服务器的数据。

可用如下方法来先确认能够读取多少数据,再来读取数据,这样就可以保证一旦服务器有数据到来就能及时的读取出来。

      tmpLen := Form1.IdTCPClient1.ReadFromStack(False, -1, False); //先确定一下缓存中数据的长度
      if tmpLen > 0 then
      begin
        FStr := Form1.IdTCPClient1.ReadString(tmpLen); //以确定的长度来读取数据

        Synchronize(HandleInput);
      end;

最后

以上就是温暖饼干最近收集整理的关于为什么TIdTcpClient总是无法接收服务器发来的数据?的全部内容,更多相关为什么TIdTcpClient总是无法接收服务器发来内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(123)

评论列表共有 0 条评论

立即
投稿
返回
顶部