![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Recv
Res © (2008-06-27 22:54:00)Здравствуйте. Подскажите пожалуйста, почему данная функция долго принимает данные, хотя по снифферу они давно были получены, иногда вообще ничего не возращает:
CONST
GP_TIMEOUT = 5000;
function recvdata(sock:TSocket):string;
var
tv : timeval;
fds : TFDSet;
buf : array [1..1024] of char;
res : string;
r : integer;
i: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, 1024, 0);
res:=res+copy(buf,1,r);
end;
result:=res;
end;
Я - против (2008-06-28 15:34:00) [1]ничего не понятно.
и как понимать, что она иногда ничего не возвращает? result равен null? :)