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
 Rubni-Corbet -> Глав...456 
 Go Web ...451 
 Trees...331 
 2.0-> Linux IP Networking...258 
 Secure Programming for Li...249 
 Stein-MacEachern-> Час...241 
 Plusquellic 1...225 
 Steve Pate 3...222 
 Mike Perry...213 
 Rubni-Corbet -> Глав...210 
 Ethreal 4...210 
 Стивенс 9...206 
 Rodriguez 6...206 
 Rubni-Corbet -> Глав...206 
 M.Pilgrim->Часть 3...192 
 Stewens -> IPC 7...192 
 2.6-> Kernel 2.6.19...191 
 Ethreal 1...191 
 Стивенс 5...190 
 Ethreal 3...188 
 
  01.09.2017 : 2280876 посещений 

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

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

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