Winsock выберите ошибку 10038, привязка и прослушивание успешно
Я пытаюсь использовать Winsock's select()
функция. Однако, несмотря на успешное создание сокета, привязку его к порту и запуск его прослушивания, выбор завершается с ошибкой 10038 ("не сокет"). С помощью TCPView я могу подтвердить, что сокет действительно прослушивает порт 8080, поэтому я не уверен, почему я получаю эту ошибку.
Это тестовый код, который я добавил сразу после успешного использования listen()
,
fd_set readfds;
SOCKET client_socket[2], s;
int act, max_clients = 2;
while (true)
{
FD_ZERO(&readfds);
FD_SET(this->sock, &readfds);
for (int i = 0; i < max_clients; i++)
{
s = client_socket[i];
if(s > 0)
{
FD_SET(s, &readfds);
}
}
act = select(0, &readfds, NULL, NULL, NULL);
if (act == SOCKET_ERROR)
{
printf("Select failed: %d" , WSAGetLastError());
}
}
Я вынул break
это обычно происходит после printf()
Просто, чтобы я мог видеть это проще в TCPView. TCPView сообщает о состоянии, как и ожидалось. этот-> носок это розетка, используемая bind()
а также listen()
,