1.用线程控制ClientSocket进行记录发送,如何控制发送频率?(如果要说Sleep,我用了一下,频率控制得不是很精确,可否具体说明)2.当发送线程在发送记录时,在主线程中用ServerSocket进行接收服务器发送的记录,我在ServerSocket的OnConnect中Suspend了发送线程,在OnDisConnect中Resume发送线程。当服务器一次发送记录较少时,程序运行正常,但如果一次发送记录较多,程序就会在接收到几条记录后死掉。请问这应该怎么解决呢?我的QQ:19420047 请各位老大帮忙啊!!!
2,
》》》ServerSocket的OnConnect中Suspend了发送线程???
在阻塞方式下面,TServerSocket的OnConnect事件不会触发的。
我的ServerSocket是非阻塞方式的,在这种方式下OnConnect,OnDisConnect事件都是可以触发的啊。
现在的问题是我可以接收,但当服务器一次发送记录较多时程序会在接收到几条记录后死掉....
procedure Delay(Ms: Real);
var
S1, E1: Int64;
begin
//QueryPerformanceCounter 为当前次数.
QueryPerformanceCounter(S1);
//
E1 := Trunc(Ms*g_nfreq/1000);
E1 := E1+S1;
repeat
QueryPerformanceCounter(S1);
until S1>=E1;
end;
2.你可以在服务器和客户端实行应答方式
每一次应答都创建一个线程YourThread:=TYourThread.Create(False);
在你的线程的Execute方法中:Synchronize(线程的执行事件);
线程的Suspend是将线程暂停了不是?而Resume是使线程恢复运行。那么当服务器一次发送记录较少时(即线程的Suspend,Resume转换较慢时),程序没有出问题,应该表明了我在接收数据的处理上应该没有问题是吗?程序出问题应该是在暂停和恢复之间出的问题,是吗?可这又要怎么解决呢?To: wycg_cnh20(伤心郁闷中)
延时和Sleep有什么区别吗?
例:当sleep(1000)时,System Idle Process占用cpu为80%以上,而我的程序则只有3%左右.... 2.现在我服务端放在其它机器上试了,接收没有出问题了。但发送速度很慢,这是由于网络原因吗?但我只是局域网上的不同机器啊....