У меня есть некоторые проблемы в Windows 8 с использованием recvfrom. У меня есть сокет, привязанный к INADDR_ANY (0.0.0.0), и я хотел бы получить некоторые пакеты на нем.Ничего не получено от recvfrom на окнах
Проблема в том, что я вижу эти пакеты в Wireshark, но recvfrom никогда не сообщает мне, что полученный размер больше 0. Я пробовал доставлять сокет до 127.0.0.1 или даже на локальный адрес IPv4, я никогда получить что-нибудь. Используемый порт - 7321 (локально)
Я использую библиотеку ENet для создания сокета, а затем я использовал этот сокет в recvfrom. Вот код, который никогда не возвращает ожидаемые пакеты.
uint8_t* buffer; // max size needed normally (only used for stun)
buffer = (uint8_t*)(malloc(sizeof(uint8_t)*2048));
memset(buffer, 0, 2048);
socklen_t from_len;
struct sockaddr addr;
from_len = sizeof(addr);
int len = recvfrom(m_host->socket, (char*)buffer, 2048, 0, &addr, &from_len); //m_host is of type ENetHost, the socket in it is a file descriptor like standard sockets
Как я уже сказал, это немного странно, как Wireshark показывает мне пакеты (которые STUN ответы, если вы хотите знать).
Может кто-нибудь помочь мне узнать, чего не хватает, что может вызвать эту проблему?
У меня была аналогичная проблема, недавно, когда Wireshark сообщила об этом пакете, и приложение прослушивало, но пакет не получил. Оказывается, это была таблица маршрутизации. Может, это и ваша проблема? (Это было на Linux, поэтому я не знаю, как проверить или исправить его в Windows) –