ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

[Delphi] Winsock 1.1; скачать файл
  #1  
Старый 25.05.2010, 17:56
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
Angry [Delphi] Winsock 1.1; скачать файл

пытаюсь скачать файл, а получается какаято битая хрень! я уже 2 часа негодую от злобы. Что может быть не так?

Код:
// ---- Шлем запрос ----
procedure SendRequest(url, packet: string);
var
info      : TWSAData;
Data      : AnsiString;
i,d,
len       :integer;
data_flag : boolean;
h, DataPos: dword;
Socket1   : TSocket;
SockAddr1 : TSockAddrIn;
tmp_buf   : array[0..1024] of char;
begin

 WSAStartup(makeword(1,0),info);
 Socket1 := Socket(AF_INET,SOCK_STREAM,0);
 SockAddr1.sin_family := AF_INET;
 SockAddr1.sin_port := htons(80);
 SockAddr1.sin_addr.s_addr := inet_addr(Pansichar(GetIPAddress(gethost(url))));
 connect(Socket1, SockAddr1, sizeof(SockAddr1));

 len := 0;
 send(Socket1, packet[1], Length(packet), 0);

 repeat
    FillChar(tmp_buf,SizeOf(tmp_buf),0);
    d := recv(Socket1, tmp_buf, 1024, 0);
    len := len + d;
    for i := 1 to d do Data := Data + tmp_buf[i];
 until d <= 0;

 DataPos := pos(#13#10#13#10, ansistring(Data)) +4;
 if DataPos > 0 then
 begin
  FillChar(tmp_buf, SizeOf(tmp_buf), 0);
  h := CreateFile(pchar('d:\avatar111490.gif'), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  WriteFile(h, Data[DataPos], len - DataPos, DataPos, 0);
  CloseHandle(h);
 end;

 Closesocket(Socket1);
 WSACleanup;
end;

function Get(const AURL: string; AResponseContent: TStream): string;
var
  Head   : string;
  Host   : string;
  urlObj : string;
begin
 { Парсим url }
  urlObj := AURL;
  urlObj := Copy(urlObj, Length(GetHost(urlObj)) +8, Length(urlObj));
  Host   := GetHost(AURL);

  Head := 'GET ' + urlObj + ' HTTP/1.0' + #13#10 +
          'User-Agent: Mozilla/4.8 [en](Windows NT 5.0; U)' + #13#10 +
          'Connection: close' + #13#10 +
          'Host: ' + Host + #13#10#13#10;

  SendRequest(AURL, head);
end;
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ