在boost::asio中一起接受IPv4和IPv6
Accept IPv4 and IPv6 together in boost::asio
简短而简单的问题:我是boost::asio
的新手,我想知道是否可以创建一个同时侦听IPv4和IPv6连接的tcp::acceptor
。boost主页上的教程显示了这样的内容:
_acceptor = new tcp::acceptor(_ioService, tcp::endpoint(tcp::v4(), 3456));
其中端点总是用特定的协议来指定。是否不可能同时在同一端口上侦听IPv4和IPv6?
如果创建IPv6接收器,如果清除了IPv6_V6ONLY套接字选项,它将同时接受IPv4和IPv6连接。IPv4地址将以IPv4映射格式显示为IPv6地址。
问题主要出现在IPV6_V6ONLY是否可用或默认值(打开或关闭)方面。因此,我发现最好将其明确设置为您想要的内容。
此外,Windows XP根本不支持该选项。
因此,如果您希望跨系统兼容,建议创建两个套接字,一个用于v4,另一个用于v6设置IPV6_V6ONLY。
相关文章:
- 无法将套接字绑定到 IPv4 和 IPv6 中的端口
- 程序托管 - 隧道/NAT IPv4/ipv6沿任一方向
- 如何判断QHostAddress在Qt5中是IPv4还是IPv6
- 使IPv6或IPv4的连接变得容易
- IPv6 和 IPv4 的套接字侦听器
- 将IPV4套接字(sockaddr_in)与IPV6套接字(sockaddr_in6)进行比较
- 正在将IPv4/IPv6地址和端口设置为sockaddr_storage结构
- 提升ASIO-获得排序的端点(首先是IPv4,然后是IPv6)
- 将 IPv6 转换为 IPv4 仅提供 0.0.0.1
- 使用本地 ipv6 套接字将 UDP 发送到本地 ipv4 地址
- 如何获取 IP 地址(IPv4 为空,但存在 IPv6),内容的详细信息
- 存储IPv4/IPv6地址的有效方式
- IPv4和IPv6地址的connect()行为
- 如何解析IPv4/IPv6地址块
- 使用Boost.Asio在单个端口上接受IPv4和IPv6连接
- Linux下的c++应用程序,用于将ipv4数据包转换为ipv6
- 正在连接IPv4客户端到IPv6服务器:连接拒绝
- IPv4和IPv6之间的Mix模式通信
- 在boost::asio中一起接受IPv4和IPv6
- 实现套接字接口支持IPV6和IPV4的最佳方式