listen_fd=socket(PF_INET,SOCK_STREAM,0);
if(listen_fd<0)
{
perror("can't socket");
exit(0);
}
memset(&srv_addr,0,1024);
srv_addr.sin_family=AF_INET;
srv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
srv_addr.sin_port=port;
ret=bind(listen_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr));
if(ret==-1)
{
if(errno==EACCES)
printf("EACCES");
else if(errno==EADDRINUSE)
printf("EADDRINUSE");
else if(errno==EBADF)
printf("EBADF");
else if(errno==EINVAL)
printf("EINVAL");
else if(errno==ENOTSOCK)
printf("ENOTSOCK");
else
printf("unkown");
exit(0);
}
这段程序老是报“ENOTSOCK” 错误。那里错了?困扰了两天了!咳~!!!
lqcone 于 2008-11-08 22:44:07发表:
同意3楼的看法。如果楼主前边port直接定义为端口号的话在给srv_addr.sin_port赋值的时候必须要用函数honts()进行转化。。。。
michrykitty 于 2008-11-06 15:42:01发表:
估计是你使用IPv6 协议的吧
shlg_wfxy 于 2008-09-29 21:12:14发表:
把PF_INET改成AF_INET就可以了嘛?为什么啊?谢谢!
zha2530 于 2008-09-29 18:23:55发表:
srv_addr.sin_port=port;
你的port怎么定义的?
前面的你写出了一个字母。
zha2530 于 2008-09-29 18:21:29发表:
listen_fd=socket(AF_INET,SOCK_STREAM,0);