procedure TTCPEchoThrd.Execute; var DataString1: string; begin sock:=TTCPBlockSocket.create; try Sock.socket:=CSock; sock.GetSins; with sock do begin repeat if terminated then break; DataString2 := RecvString(dtimeout1); if lastError<>0 then break; SendString(DataString2+#13); SynChronize(@DataParse1); if lastError<>0 then break; until false; end; finally Sock.Free; end; end; Procedure TTCPEchoThrd.DataParse1; begin writeln(DataString2); end;