概述
来源:原创
作者:
请确认服务器发来的数据量达到了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总是无法接收服务器发来的数据?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复