c++ - 在 C++ 中将 IPv6 转换为 IPv4 格式?
问题描述
我正在维护一个在 IPv4 格式上运行良好的旧系统,我发现当请求者来自 IPv6 时,侦听器没有触发。我有以下代码行
SOCKADDR_IN SocketAddr;
INT nBufferSize=sizeof(SocketAddr);
hConnectSocket=WSAAccept(m_hListenSocket,(SOCKADDR *)&SocketAddr,&nBufferSize,NULL,NULL);
if (hConnectSocket==INVALID_SOCKET) return false;
我也用谷歌搜索,我知道我应该将 SOCKADDR_IN6 用于 IPv6。是否可以将 SOCKADDR_IN6 转换为 SOCKADDR_IN 格式,以便应用程序的其余部分正常工作?
谢谢。
解决方案
您无法将所有 IPv6 地址转换为 IPv4 - IPv6 地址比 IPv4 地址多。解决此问题的最佳方法是更新/升级您的应用程序,以便它了解和存储 IPv6 地址。这个线程可能有用。
推荐阅读
- windows - WSL 更改某些应用程序的字体和颜色(nano、tmux、vim)
- database - 如何从微服务中的不同数据库中检索数据?
- django - 在 Django 中的特定时间间隔后打开特定网页
- python-3.x - 使用 for 循环输出到文本文件
- javascript - 使用 validator.js 进行电子邮件验证无法正常工作
- python - 多处理的内存消耗
- java - 哪种帐户报告工具最适合时间限制、动态查询和聚合
- ios - 如何正确隐藏范围按钮
- javascript - 如何在 JSON 中获取玩家物品数组中的所有非拥有物品
- ios - 本机 UITextField 安全文本输入强制使用英语(美国)键盘