绑定返回错误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)