首页 > 解决方案 > 在 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 格式,以便应用程序的其余部分正常工作?

谢谢。

标签: c++cipv6ipv4

解决方案


您无法将所有 IPv6 地址转换为 IPv4 - IPv6 地址比 IPv4 地址多。解决此问题的最佳方法是更新/升级您的应用程序,以便它了解和存储 IPv6 地址。这个线程可能有用。


推荐阅读