Я понимаю, что у winsock есть gethostbyname для этого. Но мне нужно отладить для встроенного приложения, и сначала я пробую код на Windows. Вот мой код: Hide Expand Copy Code
sockaddr_in dns_addr;
int dns_size = sizeof(dns_addr);
ZeroMemory(&dns_addr, dns_size);
dns_addr.sin_family = AF_INET;
dns_addr.sin_port = htons(53);
dns_addr.sin_addr.s_addr = inet_addr("8.8.8.8");
SOCKET out = socket(AF_INET, SOCK_DGRAM, 0);
char msg[] = {
0x12, 0x34, // ID
0x01, 0x00, // QR ... RCODE
0x00, 0x01, // QDCOUNT
0x00, 0x00, // ANCOUNT
0x00, 0x00, // NSCOUNT
0x00, 0x00, // ARCOUNT
0x03,
0x77, 0x77, 0x77, // www
0x03,
0x74, 0x75, 0x74, // tut
0x02,
0x62, 0x79, // by
0x00,
0x00, 0x01, // TYPE_A
0x00, 0x01 // CLASS_IN
};
int msg_size = sizeof(msg);
int iSendOk = sendto(out, msg, msg_size, 0, (sockaddr*)&dns_addr, dns_size);
if (iSendOk != SOCKET_ERROR)
{
char bufstr[100];
sockaddr_in dest_addr;
int dest_addr_size = sizeof(dest_addr);
int iReceived = recvfrom(out, bufstr, 100, 0,(sockaddr*)&dest_addr, &dest_addr_size);
}
closesocket(out);
И этот код зависает при выполнении функции recvfrom. Функция выполняется с бесконечным l oop и никогда не возвращается. Что я делаю не так?