Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ClientSocket

2.2K
14 июля 2005 года
Bigzone2
40 / / 26.12.2004
Подскажите как с помощью ClientSocket.
Сохранить страницу с сайта (Internet) на диск.
Спасиба.
299
15 июля 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Bigzone2
Подскажите как с помощью ClientSocket.
Сохранить страницу с сайта (Internet) на диск.
Спасиба.


Итак, подсказываю. Соединится с сервером думаю проблем возникнут не должно...
ClientSocket1->Address - адрес
ClientSocket1->Port = 80;
ClientSocket1->Active = true;

Устанавливаешь соединения, и как оно установлено, при помощи функции

ClientSocket1->Socket->SendText(Ansistring str);

Отправляешь параметры.

Str Должен содержать следующий код...(думаю где что заменить догадаешься, а также все это чудо должно обязательно кончится двумя переносами строки.

GET /website.htm HTTP/1.1
Host: 10.2.18.2:10
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20041217
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.7,ru;q=0.3
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7


Далее на эту запись сервер выдает ответ, в обработчик события на получение текста, то есть Read
Вставляешь функцию
AnsiString HTTP = Socket->ReceiveText();

HTTP будет содержать твою страницы. Как сохранить думаю проблем не будет.
P.S Там еще нужно будет удалить заголовки некоторые серверные, такие как куки, кодировка и др..
Вообщем ты должен будет найти первок вхождения тега <html> и все что до него удалить...
Благо ф-ции AnsiString помогают это сделать.

2.2K
15 июля 2005 года
Bigzone2
40 / / 26.12.2004
Подскажите почему так работает:
Цитата:

ClientSocket1->Host ="localhost";
ClientSocket1->Port =80;

ClientSocket1->Open();
AnsiString str ="GET ";
str +="/test/index__29_040829040828.htm";
str +=" HTTP/1.0\r\nHost: ";
str +="localhost";
str +="\r\nUser-agent: DownLoad\r\nAccept: */*\r\n\r\n";

ShowMessage(str);
ClientSocket1->Socket->SendText(str);
str ="";

const int LengthBuff =255;
char ch[LengthBuff];

for (int i=0; i<LengthBuff; i++)
{
ch='\0';
}
while (str.Pos("</html>") ==0 && str.Pos("</HTML>")==0)
{
ClientSocket1->Socket->ReceiveBuf(ch,LengthBuff-1);
ch[LengthBuff]='\0';
str +=ch;
}


а так НЕ работает:

Цитата:

ClientSocket1->Host ="localhost";
ClientSocket1->Port =80;

ClientSocket1->Open();
AnsiString str ="GET ";
str +="/test/index__29_040829040828.htm";
str +=" HTTP/1.0\r\nHost: ";
str +="localhost";
str +="\r\nUser-agent: DownLoad\r\nAccept: */*\r\n\r\n";

ClientSocket1->Socket->SendText(str);
str ="";

const int LengthBuff =255;
char ch[LengthBuff];

for (int i=0; i<LengthBuff; i++)
{
ch='\0';
}
while (str.Pos("</html>") ==0 && str.Pos("</HTML>")==0)
{
ClientSocket1->Socket->ReceiveBuf(ch,LengthBuff-1);
ch[LengthBuff]='\0';
str +=ch;
}

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог