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 
 Git 
NEWS
Последние статьи :
  Тренажёр 16.01   
  Эльбрус 05.12   
  Алгоритмы 12.04   
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
 
TOP 20
 Part 4...2108 
 Linux Kernel 2.6...1715 
 ffmpeg...1715 
 Steve Pate 1...1714 
 Trees...1714 
 Nmap-> Сканирова...1714 
 Go Web ...1714 
 UML 3...1714 
 Web3...1714 
 Apache Jmeter...1713 
 libpcap->Package capture...1713 
 AT&T Tutorial...1713 
 Rubni-Corbet -> Глав...1713 
 Robbins 3...1713 
 DevFS...1713 
 TreeLists...1713 
 File Manager -> ICE...1713 
 Go...1713 
 Easy Forum...1713 
 Linux Inline Assembly...1713 
 
  01.01.2024 : 3621733 посещений 

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

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

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