libevent 学习笔记 四

目的:测试event_base_loop()函数
方法: 作为服务器端,当有数据到来的时候,立刻关闭base 

#include <event2/event.h>

#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <string.h>
#include <string>


void cb(evutil_socket_t sock,short what,void *arg)
{
printf("function cb is called\n");
struct event_base *base=(struct event_base*)arg;
event_base_loopbreak(base);
}


void main_loop(struct event_base *base,evutil_socket_t watchdog_fd)
{
printf("function main_loop is called\n");
struct event *watchdog_event;
watchdog_event=event_new(base,watchdog_fd,EV_READ,cb,base);
event_add(watchdog_event,NULL);
event_base_dispatch(base);
}


int main()
{
struct event_base *base=event_base_new();
if(!base)
return -1;

evutil_socket_t listenfd,connfd;
socklen_t clilen;
struct sockaddr_in cliaddr,serveraddr;
listenfd=socket(AF_INET,SOCK_STREAM,0);

bzero(&serveraddr,sizeof(serveraddr));
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(15000);
serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);


bind(listenfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr));
listen(listenfd,10);
clilen=sizeof(cliaddr);


connfd=accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);


main_loop(base,connfd);
return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值