Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Packages
 Make 
 Iptables 
 Nmap 
 Apache 
 LFS 
 TUX 
 cURL 
 libpcap 
 Parted 
 Httpd 
 File managers 
 FFMPEG 
 RTMP 
 SQL 
 Test 
NEWS
Последние статьи :
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  JFS 10.06   
  B-trees 01.06   
 
TOP 20
 P.Collins...1350 
 Steve Pate 1...817 
 QT->Qt3...541 
 Trees...459 
 Python...372 
 Steve Pate 3...371 
 TCP 2...349 
 Rodriguez 6...325 
 Максвелл 3...319 
 Rubni-Corbet -> Глав...319 
 Daniel Bovet 4...319 
 TCP 3...316 
 Mod_perl 2...296 
 Linux Inline Assembly...296 
 MySQL & PosgreSQL...295 
 Robert Love 2...292 
 Daniel Bovet 3...288 
 Rodriguez 2...284 
 Стивенс 6...284 
 UML 3...282 
 
  01.05.2017 : 2190164 посещений 

iakovlev.org

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
Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье