libevent
c1s2d3n4cs
这个作者很懒,什么都没留下…
展开
-
libevent实现UDP通信
因为libevent在底层上是没有直接支持udp通信,并且在Windows上,对于udp的iocp操作,libevent也不支持(实际Windows本身是支持IOCP实现UDP通信的)不过仍然可以利用libevent实现udp通信,调试源码发现,libevent是通过select模型去实现的。下面的例子实现了先绑定某个端口,当收到消息时,udpread_cb发生回调。如果不需要绑定端口,那么就需要先sendto后,才能够收到消息,udpread_cb才会发生回调。#include <原创 2022-04-19 21:22:11 · 2897 阅读 · 0 评论 -
libevent服务端,单线程应用
libevent单线程的应用原创 2022-04-18 17:48:47 · 315 阅读 · 0 评论 -
libevent服务端,多线程应用
下面的方式是创建多个event_base来处理多线程的,主event_base用来处理连接请求,各个子event_base用来处理读写和关闭请求。另一种方式是,所有的连接、读写、断开操作,都在一个event_base里面,然后当读到数据时,放入到子线程中处理,处理完了后再写,不过此时需要读写加锁,参考下列代码中的client_register_cb(...)// TestServer.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <str.原创 2022-04-18 17:57:14 · 1203 阅读 · 0 评论 -
libevent服务端,多线程应用2
上文已经介绍过了,当Windows因为防火墙问题,可能导致evutil_socketpair失败,那么我们可以利用定时器的方式来添加新连接的用户,在一章中,修改如下libevent服务端,多线程应用#include <thread>#define CLIENT_THREAD_COUNT 2struct tagThreadContext{ std::thread thd; std::mutex mtx; std::unordered_set<evuti原创 2022-04-18 18:19:52 · 282 阅读 · 0 评论 -
libevent实现客户端
#include <string.h>#include <errno.h>#include <stdio.h>#include <signal.h>#ifdef _WIN32#include <winsock2.h>#pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "event.lib")#pragma comment(lib, "event_extra.lib")#.原创 2022-04-19 15:29:07 · 781 阅读 · 1 评论