绑定返回错误88

我试图用这个绑定套接字:

#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); } 

那回归“bind:88”,我觉得这意味着ENOTSOCK fd,真的不是套接字吗? 或88不是ENOTSOCK?

注意括号,实际上fd = 0就是你的情况。
因为在=之前评估== (参见C运算符优先级 ),所以你的代码等同于fd = (socket(...) == -1)

你应该替换

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

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