Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Работа с сетью в С++

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Работа с сетью в С++
Имя
Сообщение << Старые топики   Новые топики >>
Работа с сетью в С++ - 2008-02-05 21:20:36.763333   
Time

Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
В обычном браузере есть функция сохранения страницы как текст.
Неподскажите как сделать эту функцию в С++ с уже открытой страничкой, пользуясь WebBrowser или ещё чем-то.. просто с сетью вообще раньше не работал. Заранее спасибо!
Post #: 1
RE: Работа с сетью в С++ - 2008-02-06 02:15:51.660000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Что-то не совсем понял, что тебе нужно? Ты свой браузер пишешь?
Post #: 2
RE: Работа с сетью в С++ - 2008-02-06 02:31:29   
Time

Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
Ну допустим да.
Мне от этого браузера нужна всего одна функция: "сохранение страницы как текст в файл".
Ещё бы лучше даже без открытия этой страницы.. но сомневаюсь, что не открывая страницу, её можно сохранить как текст.. Ну хоть как нибудь сделать это для начала)
Post #: 3
RE: Работа с сетью в С++ - 2008-02-06 03:02:26.256666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Не силён в веб-программировании. Думаю можно погуглить, но попробуй на rsdn.ru поискать, там должно быть.
Post #: 4
RE: Работа с сетью в С++ - 2008-02-06 03:13:15.826666   
nixo

Сообщений: 213
Оценки: 0
Присоединился: 2006-06-25 20:22:26
ну, напиши свой браузер
вот как-ты хочешь получать "уже открытую страницу"? что ты понимаешь под выражением "открытая страница"?
предлагаю погуглить на тему "что такое браузер" и "http-протокол"
Post #: 5
RE: Работа с сетью в С++ - 2008-02-06 08:23:06.660000   
Kill_em_all

Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
Почитай RFC по HTTP.

quote:

Ещё бы лучше даже без открытия этой страницы.. но сомневаюсь, что не открывая страницу, её можно сохранить как текст.. Ну хоть как нибудь сделать это для начала)


Также не пойму что ты под этим подразумеваешь, но делается все просто. Сначала соединяешься с сервером по 80 порту. Далее посылаешь
запрос ему типа GET HTTP/1.0 index.htm. точно не помню какой запрос, сорцов под рукой нет. Потом ждешь от сервера данных. Получаешь их
в буффер, а потом уже пишешь в файл. Достаточно тривиальная задача. Для начала тебе надо почитать вообще про сетевое программирование( написание клиента TCP, сервера TCP). А далее после прочтения RFC у тебя уже станет все на свои места 
Post #: 6
RE: Работа с сетью в С++ - 2008-02-06 09:18:10.326666   
RasenHerz

Сообщений: 303
Оценки: 0
Присоединился: 2007-11-27 21:17:15.833333
по-моему парень просто хочет сохранить текст страницы (то что мы читаем) =) . вот и все.
думаю в твоем случае без знания html далеко не уплывешь ты со своим браузером… =)
Post #: 7
RE: Работа с сетью в С++ - 2008-02-06 12:41:32.266666   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: Time

Ну допустим да.
Мне от этого браузера нужна всего одна функция: "сохранение страницы как текст в файл".
Ещё бы лучше даже без открытия этой страницы.. но сомневаюсь, что не открывая страницу, её можно сохранить как текст.. Ну хоть как нибудь сделать это для начала)

Используй libcurl.
Post #: 8
RE: Работа с сетью в С++ - 2008-02-06 13:54:24.386666   
Time

Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
Всем спасибо кто откликнулся за советы.
quote:

вот как-ты хочешь получать "уже открытую страницу"? что ты понимаешь под выражением "открытая страница"?

Страница, загруженная в СppWebBrowser с любого адреса к примеру.
quote:

по-моему парень просто хочет сохранить текст страницы (то что мы читаем) =) . вот и все.
думаю в твоем случае без знания html далеко не уплывешь ты со своим браузером… =)

Я не делаю браузер по сути. Вообще общая цель это для меня: перебор определённого круга интернет-страниц и сбор инфы с них, путём сохранения каждой в текстовый файл (чтобы потом с этим тестом уже можно было работать)
quote:

Используй libcurl.

Я думаю у меня не настолько мудрёная идея, чтобы использовать какие то дополнительные библиотеки. По моему можно обойтись средствами С++ Builder…
Post #: 9
RE: Работа с сетью в С++ - 2008-02-06 14:30:55.723333   
furiousangel

Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
Короче тебе по ходу надо в проэкт добавить кой-либо html-парсер. Я так понял нужен сам текст, без хтмл разметки. Парсер будет находить все теги и выбрасывать их, а то что между ними сохранять.
Post #: 10
RE: Работа с сетью в С++ - 2008-02-06 14:36:24.446666   
Time

Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
Ну возможно тоже вариант… Где взять этот html-парсер?
Post #: 11
RE: Работа с сетью в С++ - 2008-02-06 18:09:47.063333   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: Time
quote:

Используй libcurl.

Я думаю у меня не настолько мудрёная идея, чтобы использовать какие то дополнительные библиотеки. По моему можно обойтись средствами С++ Builder…

А С++ Builder - не набор доп. библиотек?
Post #: 12
RE: Работа с сетью в С++ - 2008-02-07 00:20:19.700000   
Time

Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
Ну предположим.. Ну а как его использовать?
Post #: 13
RE: Работа с сетью в С++ - 2008-02-07 01:02:12.110000   
Kill_em_all

Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
quote:

Я думаю у меня не настолько мудрёная идея, чтобы использовать какие то дополнительные библиотеки. По моему можно обойтись средствами С++ Builder…

 
Да там даже WinApi обойдешься…  
 
Post #: 14
RE: Работа с сетью в С++ - 2008-02-07 11:58:38.973333   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: Time

Ну предположим.. Ну а как его использовать?

Тут я тебе не помощник. На Visual C++ я бы подсказал.
Post #: 15
RE: Работа с сетью в С++ - 2008-02-07 12:00:51.490000   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: Kill_em_all

quote:

Я думаю у меня не настолько мудрёная идея, чтобы использовать какие то дополнительные библиотеки. По моему можно обойтись средствами С++ Builder…


Да там даже WinApi обойдешься…&nbsp;&nbsp;



Нет, не обойдешься. Посмотри хотя бы исходники Apache HTTP Client. Он хотя и на Джаве, но объем работы для реализации этого дела с использованием простых сокетов и парсера текста должен быть ясен.
Post #: 16
RE: Работа с сетью в С++ - 2008-02-07 12:46:29.853333   
Alaget

Сообщений: 330
Оценки: 0
Присоединился: 2007-11-08 15:57:53.170000
Скачивай файл только не браузером, и удаляй из него всё лишнее.
Для тебя это самый простой вариант.
Попроще тебе никто не предложит.
Post #: 17
RE: Работа с сетью в С++ - 2008-02-07 16:12:13.210000   
Time

Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
quote:

Скачивай файл только не браузером, и удаляй из него всё лишнее.

Какой файл?? Мне надо получить текст из интернет-страницы..
Всё равно в каком виде, можно его и в файл, можно и в виде строк тупо. Чтобы потом из него можно было инфу извлекать нужную (обрабатывать). Вообще мне надо будет в дальнейшим перебирать много страниц и с каждой делать определённый разбор. Без открытия самой страницы сохранять текст - это для меня интересней всего, т.к. помоему будет уходить меньше времени на обработку одной страницы…
Post #: 18
RE: Работа с сетью в С++ - 2008-02-07 16:20:01.733333   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: Time

quote:

Скачивай файл только не браузером, и удаляй из него всё лишнее.

Какой файл?? Мне надо получить текст из интернет-страницы..
Всё равно в каком виде, можно его и в файл, можно и в виде строк тупо.


Есть такая утилита wget.exe - она делает именно это. Умеет HTTPS и Прокси. Можно через CreateProcess() ее запускать с нужными ключами чтобы получать файл на диске. Исходный код на С тоже есть, но будут проблемы с лицензированием и распространением, если делать производную работу на ее основе.
Post #: 19
RE: Работа с сетью в С++ - 2008-02-08 17:17:03.343333   
Alaget

Сообщений: 330
Оценки: 0
Присоединился: 2007-11-08 15:57:53.170000
Да просто пусть использует wininet.dll, или urlmon.
Post #: 20
RE: Работа с сетью в С++ - 2008-02-09 01:48:27.153333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Человек не понимает, что "скачать файл" == "получить текст страницы". А вы тут про высокие материи…
Post #: 21
RE: Работа с сетью в С++ - 2008-02-09 09:41:39.736666   
Kill_em_all

Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
quote:

ORIGINAL: Absurd

quote:

ORIGINAL: Kill_em_all

quote:

Я думаю у меня не настолько мудрёная идея, чтобы использовать какие то дополнительные библиотеки. По моему можно обойтись средствами С++ Builder…


Да там даже WinApi обойдешься…&nbsp;&nbsp;



Нет, не обойдешься. Посмотри хотя бы исходники Apache HTTP Client. Он хотя и на Джаве, но объем работы для реализации этого дела с использованием простых сокетов и парсера текста должен быть ясен.

 
Какая постановка задачи - такое и решение. Первый пост почитай. Открыл сокет->Сконнектился с сервером-> Послал запрос->получил текст страницы->Сохранил в файл. Какой объем работы??? Если уж браузер писать, то согласен.
Post #: 22
RE: Работа с сетью в С++ - 2008-02-10 12:36:58.740000   
Time

Сообщений: 96
Оценки: 0
Присоединился: 2007-01-29 12:36:37.266666
quote:

Человек не понимает, что "скачать файл" == "получить текст страницы". А вы тут про высокие материи…

далеко не всегда равно, я так не думаю… ну я просто не понял, что так выразились в этом случае..
Post #: 23
RE: Работа с сетью в С++ - 2008-02-10 23:00:55.346666   
nixo

Сообщений: 213
Оценки: 0
Присоединился: 2006-06-25 20:22:26
действительно не понимает, и не только  это
Post #: 24
RE: Работа с сетью в С++ - 2008-02-11 02:21:47.266666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
"Скачивание страницы" - это есть установка соединения с сервером, скорее всего с 80-м портом, отправка запроса, и, получение ответа от сервера в виде последовательности символов, которые и будут текстом страницы. Это если "на пальцах". Выше написали, как это сделать. Копай функции с префиксом WSA, если пишешь под вин32. Копать лучше в мсдн. Там очень хорошие и доступные примеры есть.
Post #: 25
RE: Работа с сетью в С++ - 2008-02-11 09:04:23.180000   
redsh

Сообщений: 338
Оценки: 0
Присоединился: 2007-06-17 22:35:25.540000

quote:

ORIGINAL: Time

В обычном браузере есть функция сохранения страницы как текст.
Неподскажите как сделать эту функцию в С++ с уже открытой страничкой, пользуясь WebBrowser или ещё чем-то.. просто с сетью вообще раньше не работал. Заранее спасибо!


проще заюзать Teleport Pro (с пом. параметров командной строки)
Post #: 26
RE: Работа с сетью в С++ - 2008-02-11 13:44:28.740000   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: Kill_em_all

quote:

ORIGINAL: Absurd
Нет, не обойдешься. Посмотри хотя бы исходники Apache HTTP Client. Он хотя и на Джаве, но объем работы для реализации этого дела с использованием простых сокетов и парсера текста должен быть ясен.


Какая постановка задачи - такое и решение. Первый пост почитай. Открыл сокет-&gt;Сконнектился с сервером-&gt; Послал запрос-&gt;получил текст страницы-&gt;Сохранил в файл. Какой объем работы??? Если уж браузер писать, то согласен.


Apache HTTP Client именно только это и делает - соединяется с сервером HTTP, выполняет GET или POST запрос и возвращает поток с ответом сервера. Но дьявол - в мелочах, поэтому это довольно большая библиотека.
Post #: 27
RE: Работа с сетью в С++ - 2008-02-12 18:15:21.503333   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
насколько я помню, у компонента WebBrowser есть соответствующий метод
в delphi это выглядит:
Memo1.lines:=Webbrowser1.OleObject.Document.Body.outerText; т.к. deplhi и cbuilder очень схожи, то на cbuilder это будет выглядить примерно также
Post #: 28
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Работа с сетью в С++







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.