当前位置:  开发笔记 > 运维 > 正文

IPv6对应用程序开发和设计有哪些好处/影响?

如何解决《IPv6对应用程序开发和设计有哪些好处/影响?》经验,为你挑选了1个好方法。

有很多关于IPv6以及即将从IPv4切换到IPv6的新闻.我对IPv6有一些了解,但我经常想知道IPv6对应用程序开发和设计有多大影响(特别是)?

是否有一些我们今天还没有提供的有形/众所周知的好处?

我知道Windows Vista和Server 2008支持开箱即用的IPv6,今天是否有人使用(或设计使用IPv6),如果是这样,有什么好处?我们是否应该在当前和未来的项目中考虑IPv6?

是否有任何关于IPv6感知应用程序的例子?



1> Alnitak..:

我害怕,亚伦的回答几乎是不正确的.是的,UI更改是必要的,但使用传统套接字API的任何代码也可能需要进行大量更改才能支持IPv6.

大多数旧代码使用特定的"地址族"常量(AF_INET)和特定的数据结构(struct sockaddr_in).任何仍然使用它的代码实际上都停留在IPv4领域.

较新的代码应该使用现代API调用,例如getaddrinfo()能够为协议,地址族(即AF_INET6),地址等返回正确的值,无论远程主机是使用IPv4还是IPv6(或两者).

它有点冗长,但这是Linux手册页中的代码示例getaddrinfo.请注意该调用如何获取潜在远程地址的完整列表,并依次尝试每个地址直到成功为止:

         memset(&hints, 0, sizeof(struct addrinfo));
         hints.ai_family = AF_UNSPEC;    /* Allow IPv4 or IPv6 */
         hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */
         hints.ai_flags = 0;
         hints.ai_protocol = 0;          /* Any protocol */

         s = getaddrinfo(hostname, service, &hints, &result);
         if (s != 0) {
             fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(s));
             exit(EXIT_FAILURE);
         }

         /* getaddrinfo() returns a list of address structures.
            Try each address until we successfully connect(2).
            If socket(2) (or connect(2)) fails, we (close the socket
            and) try the next address. */

         for (rp = result; rp != NULL; rp = rp->ai_next) {
             sfd = socket(rp->ai_family, rp->ai_socktype,
                          rp->ai_protocol);
             if (sfd == -1)
                 continue;

             if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1)
                 break;                  /* Success */

             close(sfd);
         }

         if (rp == NULL) {               /* No address succeeded */
             fprintf(stderr, "Could not connect\n");
             exit(EXIT_FAILURE);
         }

         freeaddrinfo(result);           /* No longer needed */

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有