为什么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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值