HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 06.09.2007, 19:25
5p4x2kn3t
Новичок
Регистрация: 06.09.2007
Сообщений: 8
Провел на форуме:
10073

Репутация: 0
По умолчанию

Пытаюсь в своей программе получить HTML-код Web-страницы с помощью WinSock API, но программа элементарно виснет (если есть связь с Интернетом) я неправильно пользуюсь сокетами или HTTP-протоколом?

P.S. Antichat почему-то на месте многих пробелов ставит *

Код:
procedure Get;
  var
   k : integer;
  * Servername  : string;

* * FSocket* * : integer;
* * HostEnt* * : PHostEnt;
* * SockAddrIn : TSockAddrIn;
* * dSize* * * : dword;
* * Str* * * * : array [0..255] of Char;
* * WSAData* * : TWSAData;
begin

//...
* WSAStartup(257, WSAData);* 
* * if Pos('http://', fUrl) = 0 then
* * * fUrl* *:= 'http://' + fUrl;

* Servername := AnsiReplaceStr(fUrl, 'http://', '');

* * FOR k := 1 TO length(Servername) DO
* * * if Servername[k] = '/' then
* * * * begin
* * * * * Servername := copy(Servername, 1, k - 1);
* * * * * break;
* * * * end;

* FSocket* * * * * * * * * * := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
* SockAddrIn.sin_family* * * := AF_INET;
* SockAddrIn.sin_port* * * * := htons(80);
* SockAddrIn.sin_addr.s_addr := inet_addr(PAnsiChar(Servername));
* * if SockAddrIn.sin_addr.s_addr = INADDR_NONE then
* * * begin
* * * * HostEnt := gethostbyname(PAnsiChar(Servername));
* * * * * if HostEnt = nil then
* * * * * * begin
* * * * * * * closesocket(FSocket);
* * * * * * * Exit;
* * * * * * end;
* * * * SockAddrIn.sin_addr.s_addr := PLongint(HostEnt^.h_addr_list^)^;
* * * end;
* * if Connect(FSocket, SockAddrIn, SizeOf(SockAddrIn)) <> -1 then
* * * begin
* * * * lstrcpy(Str, PAnsiChar('GET ' + url + ' HTTP/1.1' + #13#10#0));
* * * * Str := '';
* * * * send(FSocket, Str, lstrlen(Str), 0);
* * * * * repeat
* * * * * * dSize := recv(FSocket, Str, 255, 0);
* * * * * * Code.AddString(Str);
//Code - аналог TStringList
* * * * * until
* * * * * * (dSize = 0) or (dSize = SOCKET_ERROR);
* * * * closesocket(FSocket);
* * * end;
* WSACleanup();
//...
end;
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2569 10.05.2026 13:27
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



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


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




ANTICHAT ™ © 2001- Antichat Kft.