Unix平台上的绑定错误

时间:2016-04-02 16:29:51

标签: unix bind

我在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

1 个答案:

答案 0 :(得分:1)

在这种情况下,Unix手册页是你最好的伙伴。绑定手册页显示如下所示。

  

返回值

     

成功时,返回零。出错时,返回-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 */