我是靠谱客的博主 温暖饼干,最近开发中收集的这篇文章主要介绍为什么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总是无法接收服务器发来的数据?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部