ipv4、ipv6的socket同时监听“bind: Address already in use”的解决方法,ipv4ipv6


创建ipv4和ipv6的socket,同时监听某个端口的ipv4和ipv6报文,运行时bind函数执行失败,提示“bind: Address already in use”。
原因:ipv6的socket默认情况下也会接收ipv4地址的报文,不同的socket不能监听同样的ip同样的端口。
方法:设置ipv6的socket只接收ipv6地址的报文

int on = 1;
if (setsockopt(fd_v6, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0)
{
    perror("setsockopt");
    return -1;
}

 


IPv4与IPv6受限、解决方法?

回答你还是越短越好~打字的累
淘汰ipv4无非就是v4地址到2010年差不多就要枯竭的原因!
至于怎么解决,那当然是平稳过渡到ipv6
1。双栈技术
双栈技术是指在网络节点中同时支持IPv4 和IPv6 两种协议栈的技
术。这样,它既可以接收、处理、收发IPv4 的分组,也可以接收、处理、收发
IPv6 的分组,当和IPv4 节点通信时需要采用IPv4 协议栈;当和IPv6 节点
通信时需要采用IPv6 协议栈。双栈节点访问业务时支持通过DNS 解析结
果选择通信协议栈,即当域名解析结果返回IPv4 或IPv6 地址时,节点可
用相应的协议栈与之通信。
2.隧道技术
隧道技术工作原理的关键就在IPv6 网络与IPv4 网络间的隧道入口处, 路由器将IPv6 的数据分组封装入IPv4 中,IPv4 分组的
源地址和目的地址分别是隧道入口和出口的IPv4 地址。在隧道的出口处再将IPv6 分组取出转发给目的节点。目前国际IPv6 试验
床6Bone 就是采用的隧道技术。
3.协议翻译技术
NAT-PT(Network Address Translation/Protocol Translation),网络地址转换/协议转换,是一种纯IPv4 终端和纯IPv6 终端之间的互
通方式。也就是说,原IPv4 用户终端不需要进行升级改造, 包括所有地址、协议在内的转换工作都是由网络设备来完成。
 

怎让 RMI 程序同时支持 IPv4 与 IPv6

实践证明它是健壮,易于实现,并具有很好的互操作性。但是 IPv4 协议的初始设计仍有一些未考虑到的地方,随着 Internet 的飞速发展和新型应用的不断涌现,这些不足逐渐显露出来。首先,近年来 Internet 成指数级数增长,而只有 32 位地址的 IPv4 引起了迫在眉睫的 IP 地址空间耗尽的问题;第二,IPv4 路由结构较为扁平,使得 Internet 上骨干路由器需要维护庞大的路由表;第三,目前 IPv4 实现方案中,多数情况需要手工配置或者使用 DHCP 有状态方式配置协议,随着越来越多的节点要求接入网络,需要一种简便的配置方式;第四,在 IP 级的安全方面,IPv4 并不强制使用 IPSec ;最后,IPv4 协议中使用服务类型 TOS 字段来支持实时通信流传送,而 TOS 功能有限,因此对实时数据传输 Qos 的支持不是很理想。为解决上述问题及其它相关问题,互联网工程任务组织 IETF 开发了一套新的协议和标准即 IP 版本 6(IPv6)。它吸纳了很多用于更新 IPv4 的新思想,在设计时力求对上下层协议造成最小的影响。与 IPv4 相比,IPv6 协议具有以下一些新的特性:IPv6 协议头采用了固定长度的头部,路由器在处理 IPv6 报头时,效率会更高。IPv6 具有 128 位的巨大地址空间,既便为当前所有主机都分配一个 IPv6 地址,IPv6 仍然有充足的地址供以后使用。IPv6 具有即插即用特性。 IPv6 引入了无状态地址自动配置方式,链路上的主机根据路由公告和自身的链路地址可以自动生产一个 IPv6 地址,从而简化了入网主机的配置过程,实现了 IPv6 的即插即用。提供网络层的认证和加密。 IPv6 支持 IPSec,这为网络安全提供了一种基于标准的解决方案。IPv6 更好地支持 QoS 。 IPv6 协议头部包含流标签字段,使得路由器可以对属于一个流的数据包进行识别和提供特殊处理;用业务流分类字段来区分通信流的优先级。因此 IPv6 对 QoS 提供了更好的支持。IPv6 更好地支持移动性。虽然 IPv4 也有移动特性,但是作为 IPv4 的扩展实现,受到体系结构和连通性的限制。而 IPv6 的移动特性是内置的,具有较少的局限性并具有更强的可伸缩性和健壮性,可满足将来 Internet 的通信需求。IPv6 具有很好的可扩展性,这可通过在 IPv6 协议头之后添加新的扩展协议头实现。回页首Java 对 IPv6 的支持Java 从 1.4 开始,已经提供了对 IPv6 的支持。 Java APIs 遵循了如下 IPv6 标准:RFC2373: IPv6 Addressing ArchitectureRFC2553: Basic Socket Interface Extensions for IPv6RFC2732: Format for Literal IPv6 Address in URL但是由于安全等因素,Java 并没有支持原始套接字。除此之外,一些 IPv6 特性,诸如隧道,自动配置,移动 IP 等,Java 都没有提供支持。与 C/C++ 对 IPv6 的支持不同,Java 对 IPv6 的支持是自动和透明的,也就是说现有的 Java 程序不需要经过修改就可以直接支持 IPv6 。以下面代码为例,这段代码在 IPv4 上可以正常运行,同样也可以工作在 IPv6 上。InetAddress ip = InetAddress.getByName("java.sun.com");......余下全文>>
 

相关内容

    暂无相关文章