Я пытаюсь отправить запрос DNS на сервер DNS. хотя моя функция отправки работает, но функция recv не возвращает этого. это также не дает никакой ошибки. он застревает после строки "Получение ответа ...."
struct sockaddr_in dest;
dest.sin_family = AF_INET;
dest.sin_port = htons(53);
dest.sin_addr.s_addr = inet_addr("208.67.222.222"); //dns servers
int s;
s = socket(AF_INET , SOCK_DGRAM , IPPROTO_UDP);
int query_size=sizeof(struct DNS_HEADER) + (strlen((const char*)domain)+1) + 4;
printf("\n\nquery size - %d",query_size);
int cs=connect(s,(struct sockaddr*)&dest,sizeof(dest));
if(cs==0)
{
printf("\n\nconnect success\n\n");
}
printf("\nSending Packet...");
if( send(s,(char*)buf,query_size,0) < 0)
{
perror("sendto failed");
}
printf("Done");
//Receive the answer
i = sizeof(struct sockaddr_in);
printf("\nReceiving answer...");
if(recv(s,(char*)buf , 65536,0) < 0)
{
perror("recvfrom failed");
}
printf("Done");