我尝试在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??"
}
答案 0 :(得分:8)
你也应该填充sin_len字段(使用sizeof(struct sockaddr_in),应该这样做)。该字段不会出现在每个平台上,但是它必须填充。
另外,在使用它之前一定要把它结构化(但显然你无论如何都是这样做的。)