读书人

TIdTcpClient如何接收服务端指令

发布时间: 2012-10-17 10:25:47 作者: rapoo

TIdTcpClient怎么接收服务端指令
看了些例子,好像是在客户端用Timer定时轮训,检测TcpClient.ReadLn是否为空
我得Timer,interval设为500,可是接收不到指令,而且程序非常慢
应该开个线程来轮训吗?
有没有代码?

[解决办法]

Delphi(Pascal) code
大概像这样,至于线程怎么写,自己找找资料吧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)

读书人网 >.NET

热点推荐