Lier retour erreur 88

J’essaie simplement de lier un socket avec ceci:

#include  #include  #include  #include  #include  int main() { int fd,namelen,newfd; struct sockaddr_in sin = {AF_INET}; if(fd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)==-1) printf("socket : %d\n",errno); if(bind(fd,(struct sockaddr *)&sin,sizeof(sin))==-1) printf("bind : %d\n",errno); } 

Et ce retour “bind: 88”, je pense que cela signifie ENOTSOCK fd, n’est-ce pas vraiment une prise? ou 88 n’est pas ENOTSOCK?

Faites attention à la parenthèse, en fait fd = 0 dans votre cas.
Parce que == est évalué avant = (voir Priorité de l’opérateur C ), votre code est équivalent à fd = (socket(...) == -1) .

Vous devriez remplacer

 if(fd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)==-1) 

avec

 if((fd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1)