2011-05-11 7 views
1
struct addrinfo *myAddrinfo, *curMyAddrinfo, hint; 
memset(&hint, 0, sizeof(struct addrinfo)); 
hint.ai_family = AF_INET; 
hint.ai_protocol = AI_PASSIVE; 
hint.ai_socktype = SOCK_STREAM; 

const int code = getaddrinfo(NULL, SERVER_PORT, &hint, &myAddrinfo); 
if ((code) != 0) { 
    printf("getaddrinfo error occours: %s ", 
      gai_strerror(code)); 
    return 1; 
} 

cela donne l'erreur: « ai_socktype pas pris en charge » si je commente le hint.ai_protocol = AI_PASSIVE; il sera reçu, mais je me demande pourquoi il arrive?erreur getaddrinfo: ai_socktype pas pris en charge

merci pour votre temps

Répondre

2

C'est parce que AI_PASSIVE est appelé ai_flags champ, (non ai_protocol). Essayez:

hint.ai_flags = AI_PASSIVE; 

Et jeter un oeil à addrinfo structure.

+0

oh, oui .. merci .. – Nissan911

3

Il vaut la peine d'ajouter ici, car c'est le meilleur résultat lors de la recherche de "ai_socktype non supporté" une autre raison pour cela pourrait être que les astuces ne sont pas mises à zéro sur la pile; pour que vous avez besoin

memset(&hints, 0, sizeof hints); 

Code de Nissan bien sûr n'ont déjà

Questions connexes