绑定 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)
我正在尝试用这个绑定一个套接字:
#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)