Бывает задача, что надо скачать "что-то" из сети программным способом, по протоколу FTP или HTTP, или получить почту, или сделать "что-то" через telnet...
Можно конечно попытать "счастья" в программировании сокетов, однако это прямой путь к изобретению велосипеда. Если же еще и делать такую программу кроссплатформенной, то времени на разработку основной задачи может и не остаться...
Чтобы не изобретать велосипедов, можно использовать библиотеку cURL . Эта библиотека умеет работать на платформах Win и Linux. Умеет работать с протоколами: DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET и TFTP. В последней версии (7.21.1) есть возможность работы с почтовыми протоколами SMTP и POP. Кроме того, умеет работать через прокси сервер.
Далее я расскажу как установить эту библиотеку:
В Linux:
Качаем с официального сайта http://curl.haxx.se/ необходимый архив с исходниками.
Распаковываем и далее, стандартыми командами, (./configure make install) устанавливаем.
На этом установка завершена.
Для Win:
Все просто, скачиваем libcurl, распаковываем в какую-нибудь директорию.
У меня например все сторонние библиотеки располагаются в одной директории, вот так:
C:\C++ Libs\
\curl-7.21.1
\zlib_1_2_5
...
Что считаю удобным т.к.все собрано в одном месте да и потом прописывать пути в разных прогах проще.
После всех манипуляций запускаем IDE, я например использую CodeBlock, поэтому далее рассказываю на основе этой IDE.
Создаем проект. (например - консоле апликацию)
Далее, подключаем библиотеку cURL к нашему проекту.
Идем в Menu->Project-Build Options и прописываем пути к библиотекам.
Очень Важно! Соблюдаем именно такой порядок следования:
libcurl.a
libwsock32.a (из пакета minGW)
libwldap32.a (из пакета minGW)
libz.a - библиотеку zlib я добавляю отдельно, хотя она есть и в варианте поставки curl. Можно использовать и так, и так.
Приведенный выше список библиотек является минимальным для работы cURL.
В свой проект я добавил дополнительные библиотеки из поставки cURL:
В разделе #define нужно задать: CURL_STATICLIB
Например так:
Небольшой пример скачивания веб страницы:
На этом пока все, в следующей статье напишу как работать с почтой через cURL.
Полезные ссылки:
http://ru.wikipedia.org/wiki/CURL
http://www.xakep.ru/magazine/xa/121/092/1.asp
http://pblog.ru/?p=607#more-607
Можно конечно попытать "счастья" в программировании сокетов, однако это прямой путь к изобретению велосипеда. Если же еще и делать такую программу кроссплатформенной, то времени на разработку основной задачи может и не остаться...
Чтобы не изобретать велосипедов, можно использовать библиотеку cURL . Эта библиотека умеет работать на платформах Win и Linux. Умеет работать с протоколами: DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET и TFTP. В последней версии (7.21.1) есть возможность работы с почтовыми протоколами SMTP и POP. Кроме того, умеет работать через прокси сервер.
Далее я расскажу как установить эту библиотеку:
В Linux:
Качаем с официального сайта http://curl.haxx.se/ необходимый архив с исходниками.
Распаковываем и далее, стандартыми командами, (./configure make install) устанавливаем.
На этом установка завершена.
Для Win:
Все просто, скачиваем libcurl, распаковываем в какую-нибудь директорию.
У меня например все сторонние библиотеки располагаются в одной директории, вот так:
C:\C++ Libs\
\curl-7.21.1
\zlib_1_2_5
...
Что считаю удобным т.к.все собрано в одном месте да и потом прописывать пути в разных прогах проще.
После всех манипуляций запускаем IDE, я например использую CodeBlock, поэтому далее рассказываю на основе этой IDE.
Создаем проект. (например - консоле апликацию)
Далее, подключаем библиотеку cURL к нашему проекту.
Идем в Menu->Project-Build Options и прописываем пути к библиотекам.
Очень Важно! Соблюдаем именно такой порядок следования:
libcurl.a
libwsock32.a (из пакета minGW)
libwldap32.a (из пакета minGW)
libz.a - библиотеку zlib я добавляю отдельно, хотя она есть и в варианте поставки curl. Можно использовать и так, и так.
Приведенный выше список библиотек является минимальным для работы cURL.
В свой проект я добавил дополнительные библиотеки из поставки cURL:
В разделе #define нужно задать: CURL_STATICLIB
Например так:
Небольшой пример скачивания веб страницы:
#include <string>
#include <iostream>
#include "curl/curl.h"
using namespace std;
//буфер, для хранения ошибки
static char errorBuffer[CURL_ERROR_SIZE];
//Скаченные данные
static string buffer;
//Эта ф-ия вызывется при получении данных
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
int res = 0;
if (buffer != NULL)
{
buffer->append(data, size * nmemb);
res = size * nmemb;
}
return res;
}
int main(void)
{
CURL *curl;
CURLcode result;
curl = curl_easy_init();
if (curl)
{
//Установка опций
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
curl_easy_setopt(curl, CURLOPT_URL, "www.ya.ru");
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
//Запуск на выполнение
result = curl_easy_perform(curl);
if (result == CURLE_OK)
cout << buffer << "\n";
else
cout << "Error :" << errorBuffer << endl;
}
curl_easy_cleanup(curl);
return 0;
}
На этом пока все, в следующей статье напишу как работать с почтой через cURL.
Полезные ссылки:
http://ru.wikipedia.org/wiki/CURL
http://www.xakep.ru/magazine/xa/121/092/1.asp
http://pblog.ru/?p=607#more-607
Комментариев нет:
Отправить комментарий