libevent实现TCP 客户端
生活随笔
收集整理的這篇文章主要介紹了
libevent实现TCP 客户端
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?ibevent實現(xiàn)Tcp Client基于bufferevent實現(xiàn)
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <string.h> #include <fcntl.h> #include <event2/event.h>void read_cb(struct bufferevent *bev, void *arg) {char buf[1024] = {0};bufferevent_read(bev, buf, sizeof(buf));printf("say:%s\n", buf);bufferevent_write(bev, buf, strlen(buf) +1);sleep(1); }void write_cb(struct bufferevent *bev, void *arg) {printf("我是客戶端的寫回調(diào)函數(shù),沒卵用\n"); } void event_cb(struct bufferevent *bev, short events, void * arg) {if(events & BEV_EVENT_EOF){printf("connection closed \n);}else if(events & BEV_EVENT_ERROR){printf("some other error\n");}else if(events & BEV_EVENT_CONNECTED){printf("已經(jīng)連接了服務(wù)器.....\n");return ;}//釋放資源bufferevent_free(bev); } //客戶端與用戶教會,從終端讀取數(shù)據(jù)給服務(wù)器 void read_terminal(evutil_socket_t fd, short what, void *arg) {//讀數(shù)據(jù)char buf[1024] = {0};int len = read(fd, buf, sizeof(buf));struct bufferevent* bev = (struct bufferevent*)arg;//發(fā)送數(shù)據(jù)bufferevent_write(bev, buf, len+1); } int main() {struct event_base* base = NULL;base = event_base_new();//通信的fd放到bufferevent中struct bufferevent *bev = NULL;bev = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE);// init server infostruct sockaddr_in serv;memset(&serv, 0, sizeof(serv));serv.sin_family = AF_INET;serv.sin_port = htons(9999);inet_pton(AF_INET, "127.0.0.1", &serv.sin_addr.s_addr);//連接服務(wù)器bufferevent_socket_connect(bev, (struct sockaddr*)&serv, sizeof(serv));//設(shè)置回調(diào)bufferevent_setcb(bev, read_cb, write_cb, event_cb, NULL);//設(shè)置回調(diào)生效bufferevent_enable(bev, EV_READ);//創(chuàng)建事件struct event* ev = event_new(base, STDIN_FILENO, EV_READ | EV_PERSIST,READ_terminal, bev);//添加事件avent_add(ev, NULL);event_base_dispatch(base);event_free(ev);event_base_free(base); }總結(jié)
以上是生活随笔為你收集整理的libevent实现TCP 客户端的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sitemesh初步
- 下一篇: java char 空_2020重新出发