cURL Internals
Internals
Различия unix - windows
1. Функции для работы с сокетами имеют различный префикс.
2. Для создания сокета под винду нужны дополнительные вызовы
3. Файловые дескрипторы для сетевых соединений под винду имеют
менее очевидную структуру,чем под юникс.
4. При выводе в поток винда делает досовские end-of-lines ,
что например может разрушить
структуру данных , если она бинарная .
Основные функции библиотеки имеют начальный префикс 'curl_easy'
и лежат в lib/easy.c.
2 функции
curl_global_init_()
curl_global_cleanup()
вызываются в начале и в конце .
Функции типа printf() лежат в lib/mprintf.c.
Функция curl_easy_init() создает структуру SessionHandle ,
которая работает со всеми функциями типа curl_easy.
Функция curl_easy_setopt() инициализирует эту структуру .
Функция curl_easy_perform() запускает :
Curl_connect()
Curl_do()
Transfer()
Curl_done()
Curl_disconnect()
2 FTP-шных функции :
Curl_if2ip() - получает ip-шник интерфейса
Curl_ftpsendf() - посылает команды на ftp-сервер
Получить 2 документа сразу :
curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/
Получить удаленную страницу с сайта и скопировать ее локально :
curl -o thatpage.html http://www.netscape.com/
Для получения ftp-файлов можно пойти несколькими путями :
curl ftp://name:passwd@machine.domain:port/full/path/to/file
или
curl -u name:passwd ftp://machine.domain:port/full/path/to/file
Можно документ получать по частям . Например ,
для получения первых 100 байтов :
curl -r 0-99 http://www.get.this/
Получить последние 500 байт :
curl -r -500 http://www.get.this/
FTP-upload :
curl -T - ftp://ftp.upload.com/myfile
или так:
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile
HTTP-upload :
curl -T - http://www.upload.com/myfile
Если что-то не работает , можно использовать опцию дебага :
curl -v ftp://ftp.upload.com/
или
curl --trace trace.txt www.haxx.se
Для хранения http-хидера в отдельном файле :
curl --dump-header headers.txt curl.haxx.se
Для поста http-данных можно использовать опцию -d :
curl -d "name=Rafael%20Sagula&phone=3320780" \
http://www.where.com/guest.cgi
Рассмортим пример - пусть на сайте http://www.formpost.com/getthis/ лежит форма :
< form action="post.cgi" method="post">
< input name=user size=10>
< input name=pass type=password size=10>
< input name=id type=hidden value="blablabla">
< input name=ding value="submit">
>
Мы хотим передать user='foobar' и password='12345':
curl -d "user=foobar&pass=12345&id=blablabla&ding=submit" (continues)
http://www.formpost.com/getthis/post.cgi
|
|