Я использовал Libev в проекте.
Я скачал библиотеку ev и собрал ее, поэтому получил dll и libev, а затем связал ее с
моего проекта, но при запуске проекта получилось следующее ошибка.
на самом деле я имею в виду в ев. c строка 2084:
Expression: ("libev: only socket fds supported in this configuration", ioctlsocket (handle, FIONREAD, &arg) == 0)
Есть ли какие-либо изменения, необходимые для решения проблемы. Это часть кода:
int main() {
const struct addrinfo hints = {
.ai_family = PF_UNSPEC,
.ai_socktype = SOCK_DGRAM,
.ai_protocol = IPPROTO_UDP
};
quiche_enable_debug_logging(debug_log, NULL);
struct addrinfo* local;
int iResult;
WSADATA wsaData;
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (getaddrinfo("localhost", "5555", &hints, &local) != 0) {
perror("failed to resolve host");
return -1;
}
int sock = socket(local->ai_family, SOCK_DGRAM, 0);
if (sock < 0) {
perror("failed to create socket");
return -1;
}
u_long nonblocking_enabled = TRUE;
if (ioctlsocket(sock, FIONBIO, &nonblocking_enabled) != 0) {
perror("failed to make socket non-blocking");
return -1;
}
if (bind(sock, local->ai_addr, local->ai_addrlen) < 0) {
perror("failed to connect socket");
return -1;
}
config = quiche_config_new(QUICHE_PROTOCOL_VERSION);
if (config == NULL) {
fprintf(stderr, "failed to create config\n");
return -1;
}
struct connections c;
c.sock = sock;
c.h = NULL;
conns = &c;
ev_io watcher;
struct ev_loop* loop = ev_default_loop(0);
ev_io_init(&watcher, recv_cb, sock, EV_READ);
ev_io_start(loop, &watcher);
watcher.data = &c;
ev_loop(loop, 0);
freeaddrinfo(local);
quiche_config_free(config);
return 0;
}