libevent-2.1.4-alpha, сервер не может получить событие подключения при инициализации с включенным IOCP

Я использую libevent-2.1.4-alpha, сервер не может получить событие подключения при инициализации с включенным IOCP.

int main(int argc, char **argv)
{
struct event_config *evcfg;
struct event_base *base;
struct evconnlistener *listener;
struct sockaddr_in sin;

WSADATA wsa_data;
WSAStartup(0x0201, &wsa_data);

evcfg = event_config_new();
event_config_set_flag(evcfg, EVENT_BASE_FLAG_STARTUP_IOCP);
base = event_base_new_with_config(evcfg);
//base = event_base_new();

if (!base) {
    fprintf(stderr, "Could not initialize libevent!\n");
    return 1;
}

memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);

listener = evconnlistener_new_bind(base, listener_cb, (void *)base,
LEV_OPT_REUSEABLE|LEV_OPT_CLOSE_ON_FREE, -1,
(struct sockaddr*)&sin,
sizeof(sin));

if (!listener) {
    fprintf(stderr, "Could not create a listener!\n");
    return 1;
}

event_base_dispatch(base);
return 0;
}

Я искал по всей сети, но ни одно решение не работает!


person jie xu    schedule 06.09.2014    source источник


Ответы (1)


#include "event2/thread.h"

event_config* pConfig = event_config_new();
event_config_set_flag( pConfig, EVENT_BASE_FLAG_STARTUP_IOCP );
evthread_use_windows_threads();
m_pBase = event_base_new_with_config( pConfig );

должен вызывать evthread_use_windows_threads() перед event_base_new_with_config().

person jie xu    schedule 09.09.2014