代码之家  ›  专栏  ›  技术社区  ›  Jonas Byström

在本地主机上绑定127.0.0.1时是否可用?

  •  2
  • Jonas Byström  · 技术社区  · 15 年前

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

    以下是我的sockaddr的gdb打印输出:

    $1 = {
      sin_len = 0 '\0', 
      sin_family = 2 '\002', 
      sin_port = 47346, 
      sin_addr = {
        s_addr = 3232235778
      }, 
      sin_zero = "???\000\000??"
    }
    
    1 回复  |  直到 14 年前
        1
  •  8
  •   Patrick    15 年前

    您还应该填充sin-len字段(使用sizeof(struct sockaddr_-in),这样就可以完成这个技巧)。此字段不显示在每个平台上,但必须填充它。

    此外,在使用之前,一定要将结构归零(但显然你还是做了)。