绑定 return 错误 88

Bind return error 88

我正在尝试用这个绑定一个套接字:

#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <errno.h>

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

还有 return "bind : 88",我认为这意味着 ENOTSOCK fd,真的不是套接字吗?还是 88 不是 ENOTSOCK?

注意括号,在你的例子中实际上是 fd = 0。
因为 === 之前计算(参见 C Operator Precedence),所以您的代码等同于 fd = (socket(...) == -1).

你应该更换

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

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