TIdTcpClient怎么接收服务端指令
看了些例子,好像是在客户端用Timer定时轮训,检测TcpClient.ReadLn是否为空
我得Timer,interval设为500,可是接收不到指令,而且程序非常慢
应该开个线程来轮训吗?
有没有代码?
[解决办法]
大概像这样,至于线程怎么写,自己找找资料吧type TThr=class(TThread) protected procedure Execute;override; end;procedure TThr.Execute;begin try while not Terminated do begin if not Form1.IdTcpClient1.Connected then Terminate else begin try Form1.IdTcpClient1.ReadBuffer(...); {读数据} {用同步处理数据Synchronize} except {读数据异常处理} end; end; end; except end;end;
[解决办法]
type
TRecvThread = class(TThread)
private
FOnMethod: TThreadMethod;
procedure DoMethod;
protected
procedure Execute; override;
public
property OnMethod: TThreadMethod read FOnMethod write FOnMethod;
end;
procedure DoMethod;
begin
if Assigned(FOnMethod) then
FOnMethod;
end;
procedure TRecvThread.Execute;
begin
while not Terminated do
begin
try
DoMethod();
except
sleep(1);
continue;
end;
end;
end;
// 写个TThreadMethod方法给TRecvThread的对象就可以了。
var
RecvThread: TRecvThread;
RecvThread := TRecvThread.Create(True);
RecvThread.OnMethod := MyThreadMethod;
RecvThread.Resume;(Start)