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)