首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TIdTcpClient如何接收服务端指令

2012-10-17 
TIdTcpClient怎么接收服务端指令看了些例子,好像是在客户端用Timer定时轮训,检测TcpClient.ReadLn是否为空

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)

热点排行