我在Unix中遇到ftp服务器的绑定错误:server.sin_port = 8000; //的atoi(argv的[1]);
server.sin_addr.s_addr = 0;
k = bind(sock1,(struct sockaddr *) &server, sizeof(server));
if(k == -1){
printf("Binding error\n");
exit(1);
}
我使用netstat检查了端口,看起来端口是免费的......
netstat -an | 8000 grep
答案 0 :(得分:1)
返回值
成功时,返回零。出错时,返回-1,并正确设置errno。
因此,为了找出实际的绑定错误,您应该在绑定syscal之后立即打印出与errno相关联的错误消息。 perror()仅用于此更改代码,如下所示。你会找到失败的原因。
#define print_error_and_exit(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0);
server.sin_addr.s_addr = 0;
k = bind(sock1,(struct sockaddr *) &server, sizeof(server));
if(k == -1)
print_error_and_exit("bind");
/* Continue with the flow */