用最簡單的方式實現基於libevent框架的http client客戶端
阿新 • • 發佈:2018-10-31
#include <event2/event_struct.h> #include <event2/event.h> #include <event2/bufferevent.h> #include <event2/http.h> #include <evhttp.h> void http_request_done(struct evhttp_request *req, void *arg) { printf("send request ok...\n"); size_t len = evbuffer_get_length(req->input_buffer); unsigned char * str = evbuffer_pullup(req->input_buffer, len); char buf[256] = { 0 }; memcpy(buf, str, len); if(str == NULL) { printf("len = %d, str == NULL\n", len); } else { printf("len = %d, str = %s\n", len, buf); } event_base_loopbreak((struct event_base*)arg); } int main() { struct event_base* base; struct evhttp_connection* conn; struct evhttp_request* req; base = event_base_new(); //conn = evhttp_connection_new(base, NULL, "192.168.1.109", 8081); conn = evhttp_connection_new("192.168.1.109", 8081); evhttp_connection_set_base(conn, base); req = evhttp_request_new(http_request_done, base); evhttp_add_header(req->output_headers, "Host", "localhost"); evhttp_make_request(conn, req, EVHTTP_REQ_GET, "/test"); evhttp_connection_set_timeout(req->evcon, 600); event_base_dispatch(base); evhttp_connection_free(conn); event_base_free(base); printf("run over...\n"); return 0; }
服務端程式參考我之前的服務端程式碼 服務端程式碼