W
wishme2
Unregistered / Unconfirmed
GUEST, unregistred user!
Socket接收到数据后,要对数据进行处理,然后应答发送方,请问IdTcpServer怎样
怎样实现下面的功能?
///流程:
IdTcpServer收到数据,建一新线程处理数据,然后将结果返回给发送方
type
TInitThread = class(TThread)
private
procedure ProData;
protected
procedure Execute; override;
end;
//上面定义线程
procedure TInitThread.Execute;
begin
FreeOnTermiNate:=True;
Synchronize(ProData);
end;
//上面是继承了Execute方法
procedure TInitThread.ProData;
begin
Screen.Cursor:=crHourGlass;
DealData;
Screen.Cursor:=crDefault;
end;
//上面是处理数据入口函数
Procedure DealData();
begin
....//在这里处理数据,并应答发送方
end;
//上面是处理数据,并应答
//从socket接收数据,并处理之
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
RcvMsg:string;
NewThread:TInitThread;
begin
RcvMsg := AThread.Connection.CurrentReadBuffer;
if RcvMsg<>'' then
NewThread:=TInitThread.Create(false); //这里接收的数据交到一个线程处理,处理完要应
//答给发送方,所以要代入AThread以区分要应答给谁
end;
//请问怎样让线程带入AThread参数,以便线程处理完数据后能通过AThread正确应答发送方?
//另外,上面每收到一次数据就create一次线程,要怎样销毁以便不会让线程太多而消耗资源?还是不用
//处理?
怎样实现下面的功能?
///流程:
IdTcpServer收到数据,建一新线程处理数据,然后将结果返回给发送方
type
TInitThread = class(TThread)
private
procedure ProData;
protected
procedure Execute; override;
end;
//上面定义线程
procedure TInitThread.Execute;
begin
FreeOnTermiNate:=True;
Synchronize(ProData);
end;
//上面是继承了Execute方法
procedure TInitThread.ProData;
begin
Screen.Cursor:=crHourGlass;
DealData;
Screen.Cursor:=crDefault;
end;
//上面是处理数据入口函数
Procedure DealData();
begin
....//在这里处理数据,并应答发送方
end;
//上面是处理数据,并应答
//从socket接收数据,并处理之
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
RcvMsg:string;
NewThread:TInitThread;
begin
RcvMsg := AThread.Connection.CurrentReadBuffer;
if RcvMsg<>'' then
NewThread:=TInitThread.Create(false); //这里接收的数据交到一个线程处理,处理完要应
//答给发送方,所以要代入AThread以区分要应答给谁
end;
//请问怎样让线程带入AThread参数,以便线程处理完数据后能通过AThread正确应答发送方?
//另外,上面每收到一次数据就create一次线程,要怎样销毁以便不会让线程太多而消耗资源?还是不用
//处理?