cURL是一个强大的HTTP操作库, 可以协助用来操作HTTP相关工作, 减少了代码中使用socket带来的繁琐. 也包含了一个利用URL语法在命令行下工作的文件传输工具curl. 具体可以参考:http://curl.haxx.se/这也是cURL开发者的首页.
以下是我的示例, 用来测试HTTP返回数据的.
#include <stdio.h> #include <curl/curl.h> // 页面数据回调函数 static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *stream ) { int len = size * nmemb; int written = len; fwrite(ptr, size, nmemb, (FILE *)stream); //written = fputs( ptr, (FILE *)stream); return written; } // 返回http header回调函数 static size_t header_callback( void *ptr, size_t size, size_t nmemb, void *stream ) { int len = size * nmemb; int written = len; return written; } int main( void ) { CURL *curl; CURLcode res; struct curl_slist *chunk = NULL; curl = curl_easy_init(); if ( curl ) { // 加入http header 附加信息 chunk = curl_slist_append( chunk, "Accept-Language: zh-cn" ); //chunk = curl_slist_append( chunk, "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*" ); chunk = curl_slist_append( chunk, "Accept-Encoding: gzip, deflate" ); chunk = curl_slist_append( chunk, "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; CIBA)" ); chunk = curl_slist_append( chunk, "Connection: Keep-Alive" ); // 设置调试模式 curl_easy_setopt( curl, CURLOPT_VERBOSE, 1L ); curl_easy_setopt( curl, CURLOPT_URL, "192.168.1.25" ); curl_easy_setopt( curl, CURLOPT_HTTPHEADER, chunk ); // 设置回调函数 curl_easy_setopt( curl, CURLOPT_HEADERFUNCTION, header_callback ); curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_callback ); res = curl_easy_perform( curl ); /* always cleanup */ curl_easy_cleanup( curl ); curl_slist_free_all( chunk ); chunk = NULL; } return 0; }