日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

libevent实现TCP 客户端

發(fā)布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。