
22.08.2009, 00:38
|
|
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме: 4297091
Репутация:
2261
|
|
НTL, у тебя зависает на функции "recv"?
если да, то:
Код:
const
GP_TIMEOUT=10000; //это значит таймаут ожидания ответа 10 секунд
+
Код:
function recvdata(sock:TSocket):string;
var
tv : timeval;
fds : TFDSet;
buf : array [1..20000] of char;
res : string;
r : integer;
i:integer;
inc,tmp:integer;
begin
r:=1;
while (r>0) do
begin
FD_ZERO(fds);
FD_SET(sock, fds);
tv.tv_sec := GP_TIMEOUT div 1000;
tv.tv_usec := (GP_TIMEOUT mod 1000) * 1000;
i := select(0, @fds, nil, nil, @tv);
if (i <= 0) then
begin
break;
end;
r := recv(sock, buf, 20000, 0);
res:=res+copy(buf,1,r);
end;
result:=res;
end;
ну и теперь просто вместо, к примеру,
recv(s,sBuff,5000,0);
юзаешь
reply:=recvdata(s);
где s:TSOCKET;
эта функция
Последний раз редактировалось ErrorNeo; 22.08.2009 в 01:02..
|
|
|