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)
{
//水平触发(LT)只要有数据没有处理,会一直进入,
// cout << "." << flush << endl;
//边缘触发(ET)有数据时,只触发一次
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, "