|
Проблема с AThread.Connection.Socket.Recv(...)
Hi All!
Проблема: Если я ставлю "AThread.Connection.Socket.Recv(...)" в "IdTCPServer1Execute(AThread: TIdPeerThread)",
то данные принимаются как надо:
Пример:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
Rcvd: integer;
begin
Rcvd:=AThread.Connection.Socket.Recv(
PChar(@FDescriptor)[FDSize],
Sizeof(FDescriptor)-FDSize);
...
end;
Если же в IdTCPServer1Execute(AThread: TIdPeerThread) я делаю процедуру и принимаю данные уже в ней, то приложение виснет на строке "Rcvd:=AThread.Connection.Socket.Recv(...)":
Пример:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
ch: string;
begin
ch:=Athread.Connection.ReadLn;
//
if ch='get_data'
then get_data(AThread);
...
end;
procedure get_data(AThread: TIdPeerThread);
var
Rcvd: integer;
begin
Rcvd:=AThread.Connection.Socket.Recv(
PChar(@FDescriptor)[FDSize],
Sizeof(FDescriptor)-FDSize);
...
end;
Подскажите, в чем может быть проблема и как ее решить?
|