test.cpp
#include <iostream>
#include <thread>
#include <event2/event.h>
#include <event2/event.h>
#include <event2/thread.h>
#include<event2/listener.h>
#include <errno.h>
#include <string.h>
#ifndef _WIN32
#include <signal.h>
#else
#endif
using namespace std;
#define SPORT 8989
//正常断开连接和超时都会进入
void client_cb(evutil_socket_t s, short w, void* arg)
{
event* ev = (event*)arg;
//超时事件判断
if (w & EV_TIMEOUT)
{
cout << "time out" << endl;
event_free(ev);
evutil_closesocket(s);
return;
}
char buf[1024] = { 0 };
int len = recv(s, buf, sizeof(buf) - 1, 0);
if (len > 0)
{
cout << buf << endl;
send(s, "ok", 2, 0);
}
else
{
//需要清理event
cout << "." << flush;
event_free(ev);
evutil_closesocket(s);
}
}
void listen_cb(evutil_socket_t s, short w, void* arg)
{
cout << "listen_cb