请选择 进入手机版 | 继续访问电脑版

Libevent学习笔记 服务器 接受 和相应超时断开链接操作

[复制链接]
小浣熊 发表于 2021-1-3 12:03:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
[code]#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void client_cb(evutil_socket_t fd,short which,void *arg){    struct event *ev=(struct event*)arg;    //判断超时    if(which&EV_TIMEOUT)    {        event_free(ev);        evutil_closesocket(fd);        printf(" TIme out\n");    }    printf("client cb\n");    char buf[1024]={0};    int len = recv(fd,buf,sizeof(buf),0);    if(len>0)        printf("%s",buf);    send(fd,"ok",2,0);    if(len==0)    {        event_free(ev);        evutil_closesocket(fd);        printf(" close free\n");    }}void callback(evutil_socket_t fd,short which,void *arg){    struct sockaddr_in sin;    //memset(&addr,0,sizeof(addr));    socklen_t len=sizeof(sin);    evutil_socket_t cfd=accept(fd,(struct sockaddr *)&sin,&len);    printf("accept\n");    struct event_base *base=(struct event_base*)arg;    ///客户端数据读取事件    struct event *ev= event_new(base,cfd,EV_READ|EV_PERSIST,client_cb,event_self_cbarg());    if(!ev)    {        perror("event_new error");        exit(1);    }    struct timeval time_1={5,0};    event_add(ev,&time_1);    printf("event_add\n");}int main(int argc,char *argv[]){    int i=0;    int feature;    struct event_config *evconfig=event_config_new();    struct event_base *base=event_base_new_with_config(evconfig);    event_config_free(evconfig);//释放设置    if(!base)    {        perror("event base error");        exit(1);    }    if(signal(SIGPIPE,SIG_IGN)==SIG_ERR)        return 1;    // 获取当前网络模子    printf("current net methods:%s\n",    event_base_get_method(base));    evutil_socket_t sock=socket(AF_INET,SOCK_STREAM,0);    if(sock
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )