indy9 idtcpserver 使用tidpeerthread向客户端发送数据如何控制
时间:2011-09-06
来源:互联网
我将idtcpserver客户端的连接 athread 放到一个数组记录里面, 然后使用 for 循环持续向客户端发送数据,但是因为网络或者资源使用的原因,导致很多丢包的情况(具体是否属于丢包,现在还不是非常清楚,反正客户端的表现就是间隔性的丢失一些包)
Delphi(Pascal) code
大概每秒会有2-3次发送, 客户端会间接性的丢失(没收到)其他部分数据.
我现在大致把问题怀疑是在
tidpeerthread(clients[i].TCPHandle).Connection.writeln(datastr);上一次没有成功发送的时候 又执行了,所以导致前一个数据丢失? 如果真是这样, 有没有什么办法解决? 或者是其他原因导致的?
谢谢.
Delphi(Pascal) code
for i:=0 to length(clients)-1 do begin try tidpeerthread(clients[i].TCPHandle).Connection.writeln(datastr); //datastr :string; clients:record except inc(clients[i].errorcount); //errorcount:integer; end; end;
大概每秒会有2-3次发送, 客户端会间接性的丢失(没收到)其他部分数据.
我现在大致把问题怀疑是在
tidpeerthread(clients[i].TCPHandle).Connection.writeln(datastr);上一次没有成功发送的时候 又执行了,所以导致前一个数据丢失? 如果真是这样, 有没有什么办法解决? 或者是其他原因导致的?
谢谢.
作者: hxg724591 发布时间: 2011-09-06
在网络情况好的时候,没有出现这种情况, 我尝试使用不同网段模拟公网的环境来排除网络差异的问题, 但是放公网上, 如果一旦出现网络不稳定,或者连接服务器丢包什么的网络错误, 就很容易发生, 同时如果服务器资源使用过多, 比如服务器接收大量连接的瞬间(几秒), 也会造成这种情况.
作者: hxg724591 发布时间: 2011-09-06
是丢包还是粘包?
作者: leisure520 发布时间: 2011-09-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28