Networking /C++/Linux

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  11 Posts :: 14 Stories :: 1 Comments :: 0 Trackbacks

常用链接

留言簿(2)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

libcurl是一个用于传递数据的库;libevent则是提供服务器相应操作的库。

网上关于libcurl的介绍很多,主要介绍了如何用它下载网页等功能,另外网上也有许多相关php代码的实例。libevent的相关资源比较少。

一下是我实现的两个简单的小例子,一个利用libcurl发送数据,一个利用libevent去接收。

libcurl.c 发送数据

1 #include<curl/curl.h>
 2 #include<stdio.h>
 3 int main(void){
 4         char *url="http://127.0.0.1:8080/test";
 5         char mypost[]="asdfasdfasdfsdf";
 6 //      mypost[4]='\0';
 7 //      CURLcode return_code;
 8 //      return_code=curl_global_init(CURL_GLOBAL_WIN32);
 9         CURL *curl=curl_easy_init();
10         if(curl==NULL){
11                 perror("get a easy heandle failed.\n");
12                 curl_easy_cleanup(curl);
13                 curl_global_cleanup();
14                 return -1;
15         }
16         curl_easy_setopt(curl,CURLOPT_HEADER,1);
17         curl_easy_setopt(curl,CURLOPT_URL,url);
18         curl_easy_setopt(curl,CURLOPT_POST,1);
19         curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(void *)mypost);
20         curl_easy_perform(curl);
21         curl_easy_cleanup(curl);
22         return 0;
23 }

 libevent.c 接收数据

1 #include<stdio.h>
 2 #include<evhttp.h>
 3 void test_handle(struct evhttp_request *r,void *u){
 4         u_char *buf;
 5         buf=EVBUFFER_DATA(r->input_buffer);
 6         evhttp_send_reply(r,200,"read ok!",NULL);
 7         printf("the host is: %s \n",r->remote_host);
 8         printf("the data is:\n%s\n",buf);
 9         return ;
10 }
11 int main(void){
12         char *api_uri="http://127.0.0.1";
13         struct event_base *base;
14         struct evhttp *http;
15         base =event_base_new();
16         http=evhttp_new(base);
17         if(!http){
18                 perror("evhttp_new() failed");
19                 return -1;
20         }
21         if(evhttp_bind_socket(http,"0.0.0.0",8080)){
22                 perror("bind_sock() failed");
23                 return -1;
24         }
25         //evhttp_set_cb(http,"/",test_handle,NULL);
26         evhttp_set_gencb(http,test_handle,NULL);
27         event_base_dispatch(base);
28         evhttp_free(http);
29         event_base_free(base);
30         return 0;
31 }

 关于这两个库的比较好的学习地址:

http://curl.haxx.se/

http://monkey.org/~provos/libevent/

http://newblog.csdn.net/jgood/article/details/4787670

自:http://www.cnblogs.com/aLittleBitCool/archive/2011/07/02/2096384.html

posted on 2011-12-27 14:55 likun 阅读(746) 评论(0)  编辑 收藏 引用 所属分类: Linux 网络C/C++

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理