2016-02-16 3 views
1

Дано:
Предположим, что у меня есть веб-сайт под названием «exampledomain.com», и что на этом сайте, я один файл с именем «my_doc.html», полный URL адрес которого: «https://www.exampledomain.com/my_directory/my_doc.html». (Не мой фактический сайт, это просто гипотетически).

C++ Windows Sockets: Загрузка файла HTML

Objecive:
Я пытаюсь разработать клиентское приложение, с помощью C++ & Windows Sockets, который загружает мой HTML файл, разбирает его, извлекает определенную информацию, выполняет некоторые вычисления и дисплеи его результаты для пользователя.

Вопрос:
Как загрузить файл HTML с сервера в каталог "C:/ExampleDirectory /"? На стороне клиента компьютер, используя Windows Sockets Library *

Разъяснение:
Я хочу написать эту Клиентский программу для работы с существующими веб-сайт. IE: Я хочу, чтобы он загружал файл так же, как Internet-браузер, например Microsoft Edge.

Edit: Просто для уточнения, сервер использует безопасный, счет-систему, и, таким образом, этот документ будет переведен с помощью HTTPS. Я не уверен, что это повлияет на решение, но я подумал, что стоит упомянуть.

+1

HTTP-протокол имеет довольно много деталей для реализации, поэтому мы используем специальные клиентские библиотеки http, такие как WinHTTP, проверяем http://stackoverflow.com/questions/822714/how-to-download-a-file-with -winhttp-in-cc –

ответ

2

Не делайте этого.

Библиотека сокетов не является подходящим инструментом для общения с веб-сервером. http достаточно сложный, что вы хотите использовать специализированную http-библиотеку. Доступно несколько таких библиотек. curllib springs на ум. И, конечно, есть тег WinHttp https://stackoverflow.com/tags/winhttp/info.

И для части html вы хотите использовать библиотеку разбора html для извлечения нужной информации.

+0

Напротив. HTTP - один из самых простых протоколов для реализации на стороне клиента. Это не должно занимать более нескольких десятков строк для реализации. getaddrinfo(), socket(), connect(), write(), read(). Все готово. Единственное, что нужно знать, это формат HTTP-сообщений: «GET HTTP/1.0 \ r \ nHost: \ r \ n \ r \ n". Конец. Это не ракетостроение. Постскриптум Eh, может быть, еще шесть строк кода для обработки прокси. –

+1

@Sam Итак, что вы делаете для 300? Кодировка символов? Сжатие? –

+0

Это могло быть правдой еще в 90-х годах. Сейчас не так много. –