delphi我不是很熟悉,刚接触。现在遇到一个问题像请教大家,应该如何处理。
我有一个线程,专门用来处理winsocket的接收字节流的,但是到
recv(socketClient, rcBody, SizeOf(rcBody), 0);
这一句的时候就不动了(这时候没有任何数据流,但是10秒以后会有,也就是链路检测包),10秒以后又能接收到,应该如何处理。程序代码大致如下:
Procedure TCheckThread.Execute;
Begin
Repeat
Synchronize(Receiver);
Until Terminated;
End;Procedure TCheckThread.Receiver;
Procedure PrintActive;
Begin
Timer1.Enabled := True;
With llv.Items.Insert(0) Do
Begin
Caption := IntToStr(llv.Items.Count);
SubItems.Add(DateTimeToStr(Now));
SubItems.Add('链路测试');
SubItems.Add('接收到链路检测的Resp.');
End;
End;
Var
rcBody: THEAD;
Begin
recv(socketClient, rcBody, SizeOf(rcBody), 0);
Case htonl(rcBody.command) Of
FWPP_ACTIVE_RESP: PrintActive;
End;
End;
我有一个线程,专门用来处理winsocket的接收字节流的,但是到
recv(socketClient, rcBody, SizeOf(rcBody), 0);
这一句的时候就不动了(这时候没有任何数据流,但是10秒以后会有,也就是链路检测包),10秒以后又能接收到,应该如何处理。程序代码大致如下:
Procedure TCheckThread.Execute;
Begin
Repeat
Synchronize(Receiver);
Until Terminated;
End;Procedure TCheckThread.Receiver;
Procedure PrintActive;
Begin
Timer1.Enabled := True;
With llv.Items.Insert(0) Do
Begin
Caption := IntToStr(llv.Items.Count);
SubItems.Add(DateTimeToStr(Now));
SubItems.Add('链路测试');
SubItems.Add('接收到链路检测的Resp.');
End;
End;
Var
rcBody: THEAD;
Begin
recv(socketClient, rcBody, SizeOf(rcBody), 0);
Case htonl(rcBody.command) Of
FWPP_ACTIVE_RESP: PrintActive;
End;
End;
解决方案 »
- windows server 2008 程序界面无法显示
- 求解一条sql语句,急!!!!!
- 再问刚才一个问题,看来分数不够多不吸引人啊
- 如何判断光标在哪个DBGrid?
- open;//為什麼要使用open才可以在dbgrid1顯示table1的數據?
- 怎么定义全局变量以及调用全局变量
- 有变量n,怎么样动态的建n个label?
- 求救!请问用delphi或cbc做的工程在不装sql server客户端如何联接服务端(要什么文件?)
- 急用!怎样让输入焦点进入DBGRID的一个cell?(如到第二列的第三行)
- 那位知道怎样预览AutoCAD图象文件.即(.Dwg)文件
- 散分 & 关于Pascal强制类型转换
- 做了一个软件怎么测试它对网络和系统资源监控呀
去掉Synchronize就可以了!