【发布时间】:2015-02-26 23:22:54
【问题描述】:
您好,我在使用套接字 api 编写服务器时遇到问题。我总是收到这个错误:“非套接字上的套接字操作”
struct sockaddr_in addr;
int port = 10000;
int sd;
memset((char *) &addr,0, sizeof(addr));
addr.sin_family = PF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htonl((u_short)port);
if ((sd = socket(PF_INET, SOCK_STREAM, 0) < 0)) {
printf("socket failed");
}
if(bind(sd, (struct sockaddr *)&addr, sizeof(addr)) != 0)
{
printf(strerror(errno));
}
close(sd);
return 0;}
【问题讨论】:
-
如果你得到一个错误,(a) 不要只打印一些你自己设计的消息:使用
perror()或strerror(),并且(b) 不要继续,就像错误一样没有发生。并且测试!= 0的系统调用是不正确的:正确的测试是== -1或< 0。
标签: c++ c sockets network-programming bsd