当前位置: 首页 > 知识库问答 >
问题:

IPV6绑定失败错误:无法分配请求的地址

上官和韵
2023-03-14

>

  • 我已经用以下接口配置了Ubuntu Linux系统&分配的IPV6地址如下:

    eth2:链路封装:以太网HWaddr 00:50:56:8D:56:14
    inet ADDR:192.168.2.10BCAST:0.0.0掩码:255.255.255.0
    inet6 ADDR:FC00:1234:2::10/120作用域:全局
    inet6 ADDR:FE80::250:56FF:FE8D:5614/64作用域:链路
    UP广播运行多播MTU:1500度量:1
    RX数据包:480068741错误:0丢弃:0溢出:0帧:0
    TX数据包:34145702错误:0丢弃:0溢出:0载波:0冲突:0

    我想使用IPV6套接字进行套接字编程。我编写的代码片段如下:

    struct sockaddr_in6 sin
    Ipv6_fdr=套接字(PF_INET6,SOCK_DGRAM,IPPROTO_UDP)

    bzero(&sin,sizeof(sin));
    sin.sin6_family=af_inet6;
    sin.sin6_port=htons(2152);
    if((setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(int)))<0)
    memcpy(&(sin.sin6_addr),“fc00:1234:1::10”,sizeof(sin.sin6_addr));
    if((bind(sock,(struct sockaddr*)&sin,

    编译成功后,我收到IPV6绑定失败错误,错误号和名称如下:
    EADDRNOTAVAIL 99/*无法分配请求的地址。
    尝试IPV6绑定若干次后,它会抛出分段错误错误。

    如果有人能帮我弄清我在这里犯了什么错误&为什么IPV6绑定失败了,那就太好了?

  • 共有1个答案

    唐兴发
    2023-03-14

    代码中的问题是这行:

    memcpy(&(sin.sin6_addr), "fc00:1234:1::10",sizeof(sin.sin6_addr));
    

    需要将人类可读字符串转换为二进制,并将地址的二进制形式存储为sin6_addr,类似于:

    inet_pton (AF_INET6, "fc00:1234:1::10", sin.sin6_addr.s6_addr);
    
     类似资料:
    • 无法解决此错误,我首先尝试更改关闭端口,但它不起作用,然后我更改了连接器端口,但仍然不起作用。

    • 我正在尝试编写一个C程序来侦听我机器上的端口。我遇到了一个奇怪的错误。 每当我尝试将套接字绑定到固定IP(或我的实际IP)时,我都会收到错误。但是,当我作为要绑定到的地址传递给绑定时,它的工作原理。 这些是我仅有的两个IP,因此0.0.0.0不能因为我可用的其他IP地址而起作用。 代码如下:

    • 当运行以下代码时,我在说java.net。绑定异常:绑定失败:EADDRNOTAVAIL(无法分配请求的地址)。我不知道为什么会这样。代码如下: 谢谢!

    • 我正在使用asp。net core 3.1 docker支持的项目模板(VS2019)用于开发web API。没有编译错误。 运行项目时,在VS2019的输出窗口中,我看到以下消息: 这是我的Docker.develop文件: 有人能在这里帮助我提供他们的指导来解决这个问题吗

    • 问题内容: 我在172.16.1.218上运行以下node.js服务器: 我可以远程登录到它,它会按预期的方式回显。 我有以下运行在172.16.1.224上的node.js服务器: 但是,当我尝试运行它时,出现以下错误: 我已关闭所有防火墙等。对于此错误,我一无所知。希望有人能提供帮助。 提前谢谢了, 问题答案: 开启时,您无法监听,因为那不是您正在监听的计算机的IP。 如果要在该计算机上收听,

    • 问题内容: 我想在我的应用程序中使用低端口(Spring Web上的SNMP陷阱接收器+ Tomcat7)。正如我之前在此线程将低端口绑定到Ubuntu Server上的Java程序中所告诉的那样,我收到了错误权限被拒绝。然后,我将tomcat7用户组更改为root。但是之后,我得到了java.net.BindException:无法分配请求的地址错误。对于我尝试的每个端口(低端口或高端口),我总