本站文章均为 李华明Himi 原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/curl-libcurl/878.html
☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!
注意:如果你的服务器是Java的,那么要注意数据之间的大端小端的处理;否则无法正常获取正确的数据!
本篇介绍使用libcurl编程的一般原则和一些基本方法。本文主要是介绍 c 语言的调用接口,同时也可能很好的适用于其他类 c 语言的接口。
libcurl库背后的开发人员投入了相当大的努力确保libcurl可以在很多不同的系统和环境里工作。
程序必须初始化一些libcurl的全局函数。这意味着不管你准备使用libcurl多少次,你都应该,且只初始化一次。当你的程序开始的时候,使用
curl_global_init()
这个函数需要一个参数来告诉它如何来初始化。使用CURL_GLOBAL_ALL ,它将用通常是比较好的默认参数来初始化所有已知的内部子模块。还有两个可选值:
CURL_GLOBAL_WIN32
这个参数只被用在windows 操作系统上。它让libcurl初始化win32套接字的的东西。没有正确的初始化,你的程序将不能正确的使用套接字。你应该只为每个程序做一次这样的操作,如果你的程序的其他库这样了,你就不要再让libcurl这样做。
CURL_GLOBAL_SSL
这个参数会使libcurl具有SSL的能力。你应该只为每个程序做一次这样的操作,如果你的程序的其他库这样了,你就不要再让libcurl这样做。
libcurl有个默认的保护机制,检测如果curl_global_init没有在curl_easy_perform之前被调用,那么libcurl会猜测该使用的初始化模式来执行程序。请注意,依靠默认的保护机制来这么做一点都不好。
当程序不再使用libcurl,请调用curl_global_cleanup函数来对应初始化函数所做的工作,它会做逆向的工作来清理curl_global_init所初始化的资源。
请避免重复的调用curl_global_init和 curl_global_cleanup。他们每个仅被调用一次。
确定libcurl所提供功能的最佳办法是在运行的时候而不是在编译的时候。通过调用curl_version_info函数,然后查看返回信息的结构体,你知道当前的libcurl版本所支持的功能了。