Toggle navigation Libevent教程
C++手册
C语言手册
FFMPEG教程
Libevent教程
libmysql教程
老夏课堂
Linux下载
C++开发工具
鸿蒙
目录
libevent视频课程
libevent视频课程
点击进入libevent视频课程
代码示例
#include #include #include #ifndef _WIN32
#include #endif
#include using namespace std;
#define SPORT 5001
void listen_cb(struct evconnlistener * e, evutil_socket_t s, struct sockaddr *a, int socklen, void *arg)
{
cout << "listen_cb" << endl;
}
int main()
{
#ifdef _WIN32
//初始化socket库
WSADATA wsa;
WSAStartup(MAKEWORD(2,2),&wsa);
#else
//忽略管道信号,发送数据给已关闭的socket
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
return 1;
#endif
std::cout << "test server!n";
//创建libevent的上下文
event_base * base = event_base_new();
if (base)
{
cout << "event_base_new success!" << endl;
}
//监听端口
//socket ,bind,listen 绑定事件
sockaddr_in sin;
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(SPORT);
evconnlistener *ev = evconnlistener_new_bind(base, // libevent的上下文
listen_cb, //接收到连接的回调函数
base, //回调函数获取的参数 arg
LEV_OPT_REUSEABLE|LEV_OPT_CLOSE_ON_FREE,//地址重用,evconnlistener关闭同时关闭socket
10, //连接队列大小,对应listen函数
(sockaddr*)&sin, //绑定的地址和端口
sizeof(sin)
);
//事件分发处理
if(base)
event_base_dispatch(base);
if(ev)
evconnlistener_free(ev);
if(base)
event_base_free(base);
#ifdef _WIN32
WSACleanup();
#endif
return 0;
}
libevent视频课程
libevent视频课程
版权所有: 南京捷帝科技有限公司 老夏课堂