나는 recvfrom를 사용하여 Windows 8에서 몇 가지 문제가 있습니다. INADDR_ANY (0.0.0.0)에 바인드 된 소켓이 있는데, 그 중 일부 패킷을 받고 싶습니다.아무것도 recvfrom 창문에서받은
문제는 내가 Wireshark에있는 패킷을 보았지만 recvfrom은 수신 된 크기가 0보다 크지 않다는 것을 결코 알려주지 않는다. 127.0.0.1 또는 심지어 로컬 IPv4 주소로 소켓을 전송하려 시도했지만 결코 아무것도 얻지 마라. 사용 된 포트는 7321 (로컬)입니다.
소켓 생성에 ENet 라이브러리를 사용하고 recvfrom에이 소켓을 사용했습니다. 다음은 예상 패킷을 반환하지 않는 코드입니다. 내가 말했듯이 Wireshark를 나에게 (당신이 알고 싶다면 STUN 응답이다) 패킷을 같이
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
, 그것은 조금 이상해.
누군가이 문제를 일으킬 수있는 누락 된 부분을 찾도록 도와 줄 수 있습니까?
1) 당신은 올바른 포트를 가지고하지 않을 수 있습니다 sendto를 &에 recvfrom 소켓 :
Wireshark가 패킷을보고하고 응용 프로그램이 수신 중이지만 패킷을 수신하지 않은 비슷한 문제가 최근 발생했습니다. 라우팅 테이블이었습니다. 어쩌면 그건 너의 문제 야? (리눅스에 있었기 때문에 Windows에서 확인 또는 수정하는 방법을 모르겠습니다.) –