vvs777
04.08.2008, 07:42
Прошу помочь разобраться а то я че-то торможу не могу понять откуда берется г**но.
Delphi. Uses WinSock.
TCP. Connect на 80 порт, GET, save to file.
function wsrecvstring(mailsocket:TSocket; var L:Longint):string;
var
buffer:array[1..64000] of byte;
i:integer;
buffstr:string;
begin
buffstr:='';
fillchar(buffer,sizeof(buffer),0);
l:=winsock.recv(mailsocket,buffer[1],sizeof(buffer),0);
if L>0 then
for i:=1 to L do
begin
buffstr:=buffstr+chr(buffer[i]);
end;
try
result:=buffstr;
except
result:='';
end;
end;
...
heads:='';
heads:=wsrecvstring(mysock,L);
np:=1;
repeat
s:=wsrecvstring(mysock,L);
heads:=heads+s;
until l<1;
При этом в полученном содержимом (для хтмл-страниц оно неипет, а вот бинарники засирает)
иногда появляются конструкции вида
13#10 //CRLF
послед_3-4_символа
13#10 //CRLF
это типа слитно.
Например
HTTP/1.1 200 OK
...
Content-Type: image/jpeg
1000
яШяа JFIF... - ср**ая тысяча
потом в том эе файле еще раз она же, потом f56, 5321, и в разных файлах свое. В конце 0 и неско CRLF подрял.
Откуда берется не ясно.
Данные (картинки и тестовые до 25кб - остальные не пробовал) с сервера приходят одним цельным пакетом (когда-то сталкивался с тем что на некоторых серваках заголовок идет одним пакетом, данные остальными, потом увидел что это не обязательно
и если это криво склеивать вместе...
хотя у меня не криво
heads:=heads+s; без мусора.
).
Может кто видел это раньше?
PS: предложения типа юзай wininet/indy/nm/fp не принимаются. Надо на сокетах и только.
Delphi. Uses WinSock.
TCP. Connect на 80 порт, GET, save to file.
function wsrecvstring(mailsocket:TSocket; var L:Longint):string;
var
buffer:array[1..64000] of byte;
i:integer;
buffstr:string;
begin
buffstr:='';
fillchar(buffer,sizeof(buffer),0);
l:=winsock.recv(mailsocket,buffer[1],sizeof(buffer),0);
if L>0 then
for i:=1 to L do
begin
buffstr:=buffstr+chr(buffer[i]);
end;
try
result:=buffstr;
except
result:='';
end;
end;
...
heads:='';
heads:=wsrecvstring(mysock,L);
np:=1;
repeat
s:=wsrecvstring(mysock,L);
heads:=heads+s;
until l<1;
При этом в полученном содержимом (для хтмл-страниц оно неипет, а вот бинарники засирает)
иногда появляются конструкции вида
13#10 //CRLF
послед_3-4_символа
13#10 //CRLF
это типа слитно.
Например
HTTP/1.1 200 OK
...
Content-Type: image/jpeg
1000
яШяа JFIF... - ср**ая тысяча
потом в том эе файле еще раз она же, потом f56, 5321, и в разных файлах свое. В конце 0 и неско CRLF подрял.
Откуда берется не ясно.
Данные (картинки и тестовые до 25кб - остальные не пробовал) с сервера приходят одним цельным пакетом (когда-то сталкивался с тем что на некоторых серваках заголовок идет одним пакетом, данные остальными, потом увидел что это не обязательно
и если это криво склеивать вместе...
хотя у меня не криво
heads:=heads+s; без мусора.
).
Может кто видел это раньше?
PS: предложения типа юзай wininet/indy/nm/fp не принимаются. Надо на сокетах и только.