我将idtcpserver客户端的连接 athread 放到一个数组记录里面, 然后使用 for 循环持续向客户端发送数据,但是因为网络或者资源使用的原因,导致很多丢包的情况(具体是否属于丢包,现在还不是非常清楚,反正客户端的表现就是间隔性的丢失一些包)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);上一次没有成功发送的时候 又执行了,所以导致前一个数据丢失? 如果真是这样, 有没有什么办法解决? 或者是其他原因导致的?
谢谢.
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);上一次没有成功发送的时候 又执行了,所以导致前一个数据丢失? 如果真是这样, 有没有什么办法解决? 或者是其他原因导致的?
谢谢.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货