在localhost上绑定127.0.0.1时EADDRNOTAVAIL?

时间:2010-02-11 12:38:50

标签: macos sockets darwin

我尝试在G5(大端PowerPC)上运行Mac OS X的UDP errno==49 (EADDRNOTAVAIL)到127.0.0.1:47346时得到bind()。有什么东西阻止我这样做吗?我已经尝试过其他地址和端口(192.168.1.2和端口47346),但没有成功。

这是我的sockaddr_in的gdb打印输出:

$1 = {
  sin_len = 0 '\0', 
  sin_family = 2 '\002', 
  sin_port = 47346, 
  sin_addr = {
    s_addr = 3232235778
  }, 
  sin_zero = "???\000\000??"
}

1 个答案:

答案 0 :(得分:8)

你也应该填充sin_len字段(使用sizeof(struct sockaddr_in),应该这样做)。该字段不会出现在每个平台上,但是它必须填充。

另外,在使用它之前一定要把它结构化(但显然你无论如何都是这样做的。)