2010-02-11 72 views
2

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

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

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

回答

8

你应该充满sin_len场,以及(带的sizeof(结构sockaddr_in中),应该做的伎俩)。这个字段没有出现在每个平台上,但是它存在的地方,它必须被填充。

此外,在使用它之前一定要使用bzero结构(但它显然看起来你是这么做的)。

+0

感谢gazillion! – 2010-02-11 15:41:11

+0

这对我也有效!根据经验,您需要将结构设置为bzero,否则“绑定”将会失败。 – 2011-02-13 02:08:43

+0

设置长度没有效果,调整为我工作的结构。在我的情况下,这是第三方代码,我完全忽略了这一点。谢谢! – nevelis 2011-09-03 05:35:08

相关问题