使用libcurl库进行HTTP的下载

由于这段时间需要进行跨平台的代码处理,以前写的很多代码都没办法用了.以前用的是win的WinInet库进行HTTP上传和下载的,在Linux下肯定无法使用了,而我又对socket这些东西不是很了解,只能找一些第三方的跨平台库来使用了.不知道出于啥原因,选择了libcurl.然后花了数天时间来了解这个库有关上传下载的东西,可能我的搜索水平有限吧,直到这两天才真正找到一些可供参考的东西.当然我也试着阅读了libcurl的官方文档,但很无奈,英文水平太差,读完后还是不知道该怎么用.

先贴三个对此次学习帮助最大的三个网址吧:

curl官网:http://curl.haxx.se/libcurl/

JGood对libcurl很多函数的官方文档翻译,加了一些实例,很清晰: http://blog.csdn.net/JGood/archive/2009/11/08/4787670.aspx

浪迹天涯对libcurl的一些使用心得,从中我得到了怎么判断HTTP地址的文件是否存在的判断方法:

http://www.cppblog.com/qiujian5628/archive/2008/06/28/54873.html

 


 

先说下思路吧:

用curl库,一般步骤为:

       先使用curl_global_init()初始化curl,然后使用curl_easy_init()获取curl句柄,再根据得到的句柄进行一些操作设置curl_easy_setopt(),设置完后用curl_easy_peform()执行你以前所做的所有设置.若在设置上做了READ或WRITE等动作,在执行完后还可以用curl_easy_getinfo()来获取你取得的一些东西,这里可以进行一些判断(我就是在这里判断HTTP头,来处理到底远程文件是否存在的).最后就是用curl_easy_cleanup(),curl_global_cleanup()来清理以前初始化的东西.

具体的请看JGod大大的blog.

比较需要了解的还是curl_easy_setopt()的参数:

     

 

设置好后就能利用curl进行文件的上传和下载了.

 


 

接下来进入主题,上代码:

    

 

 在外部只要传入url如:http://192.168.1.1/868.txt,和欲存到本地的文件名file_name就行了.

 

忘了说明了,这目前只是在win下知道怎么用了,linux下还没有编译,等把上传实现了再说.

 

展开阅读全文

没有更多推荐了,返回首页