我在使用 recvfrom 的 Windows 8 上遇到了一些问题。我有一个绑定到 INADDR_ANY (0.0.0.0) 的套接字,我想在上面接收一些数据包。
问题是我在 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 响应)。
有人可以帮我找出可能导致此问题的缺失吗?