gpt4 book ai didi

linux - IPV6绑定(bind)失败错误: Cannot assign requested address

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:57 25 4
gpt4 key购买 nike

  1. 我已经使用以下接口(interface)配置了 Ubuntu Linux 系统并分配了如下 IPV6 地址:

    Eth0: Link encap:Ethernet HWaddr 00:50:56:8d:57:64
    inet 地址:192.168.254.10 Bcast:0.0.0.0 Mask:255.255.255.0
    inet6 地址:fe80::250:56ff:fe8d:5764/64 范围:链接
    向上广播运行多播 MTU:1500 指标:1
    RX packets:74231424 errors:0 dropped:1 overruns:0 frame:0
    TX 数据包:400372550 错误:0 丢弃:0 溢出:0 运营商:0 碰撞:0 txqueuelen:1000
    RX 字节:24514286488 (24.5 GB) TX 字节:115992171490 (115.9 GB)

    Eth1:Link encap:Ethernet HWaddr 00:50:56:8d:7c:4c
    inet 地址:192.168.1.10 Bcast:0.0.0.0 Mask:255.255.255.0
    inet6 地址:fe80::250:56ff:fe8d:7c4c/64 范围:链接
    inet6 地址:fc00:1234:1::10/120 范围:全局
    向上广播运行多播 MTU:1500 指标:1
    RX 数据包:434933479 错误:0 丢弃:1 溢出:0 帧:0
    TX 数据包:39666183 错误:0 丢弃:0 溢出:0 运营商:0 碰撞:0 txqueuelen:1000
    RX 字节:126065364448 (126.0 GB) TX 字节:14437801257 (14.4 GB)

    Eth2:链接 encap:Ethernet HWaddr 00:50:56:8d:56:14
    inet 地址:192.168.2.10 Bcast:0.0.0.0 Mask:255.255.255.0
    inet6 地址:fc00:1234:2::10/120 范围:全局
    inet6 地址:fe80::250:56ff:fe8d:5614/64 范围:链接
    向上广播运行多播 MTU:1500 指标:1
    RX 数据包:480068741 错误:0 丢弃:0 溢出:0 帧:0
    TX 数据包:34145702 错误:0 丢弃:0 溢出:0 运营商:0 碰撞:0 txqueuelen:1000
    RX 字节:146795537550 (146.7 GB) TX 字节:10045338657 (10.0 GB)

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

    结构 sockaddr_in6 sin
    ipv6_fdr = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP)

    bzero(&sin, sizeof(sin));
    sin.sin6_family = AF_INET6;
    sin.sin6_port = htons(2152);
    如果 ((setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int))) < 0)
    memcpy(&(sin.sin6_addr), "fc00:1234:1::10",sizeof(sin.sin6_addr));
    如果 ((绑定(bind)(sock, (struct sockaddr*)&sin, sizeof(sin)))< 0)

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

如果有人可以帮助我解决我在这里犯的错误以及为什么 IPV6 绑定(bind)失败,那就太好了?

最佳答案

您的代码中的问题在于:

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);

关于linux - IPV6绑定(bind)失败错误: Cannot assign requested address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40869942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com