libcurl

来源:百度文库 编辑:神马文学网 时间:2024/04/29 17:01:25
觉得找一个好用的C/C++ socket库很难。直接写API总是很痛苦的,繁琐易错。w3c的libwww已经停止开发;一些大的库,比如GNU的Common C++和wxWidgets等都有socket类,但不是很专,并不好用;ACE值得一学,不过实在是复杂,有些情况下用起来真可怕。以前看过一阵libcurl,也不记得是哪位师兄推荐的了(this?),正好昨天跟康总讨论这个到深夜,干脆这次慢慢来玩玩,测一下在Windows和Mac OS X下的表现如何。
libcurl移植性很好,几乎所有流行的操作系统都有移植。它应该说是相对高层的库,不直接操纵socket。按它的介绍,libcurl is a free and easy-to-use  client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, GOPHER,  TELNET, DICT, FILE and LDAP. libcurl supports HTTPS certificates, HTTP POST,  HTTP PUT, FTP uploading, kerberos, HTTP form based upload, proxies, cookies,  user+password authentication, file transfer resume, http proxy tunneling and more!
我的印象是libcurl主要支持两套操作API,同步和异步的。异步的估计是用select来做的多路分离,不过还没仔细看源代码,不敢确定。libcurl有各种语言的binding,不过我还是最喜欢C的,它本身也是基于C的,所以以后也只讨论C版本的libcurl。
以前我在Mac OS X和Red Hat 9下build过,没有任何问题。不过我不记得在Mac OS X下是用fink或是opendarwin做,还是直接build,什么时候还得重新看看。今天主要在Windows下试了试,包括cygwin和Visual C++。简单倒是简单,只是还是犯了些土鳖错误折腾了好久。明天继续把build的过程写一下吧。