标签: ipv6

你如何在Chrome for MAC中使IPV6默认?

我去过chrome:// net-internals/#dns并启用了IPV6,但似乎没有让浏览器首先尝试IPV6地址的选项,它默认为IPV4.

在启用IPV6之前,默认地址族为:默认地址族:ADDRESS_FAMILY_IPV4(禁用IPv6)启用IPV6后,它显示为:默认地址族:ADDRESS_FAMILY_UNSPECIFIED

这看起来很有希望,直到它首先抓住IPV4地址.任何帮助将不胜感激甚至确认不可能.

default google-chrome ipv6

18
推荐指数
2
解决办法
2万
查看次数

可达性和IPv6

我的一个项目使用Apple的Reachability类来监控网络状态,并在发生变化时得到通知.

在阅读了关于支持IPv6的这篇文章后,我想知道是否要在这个类中使用它以使其与IPv6一起工作.

在同一篇文章后面建立了一个IPv6网络,一切似乎都运行良好,但可能是设置有问题.

Reachability类的一部分是检查Internet连接是否与IPv6一起使用,还是需要进行一些更改?

objective-c ipv6 reachability ios

18
推荐指数
1
解决办法
7392
查看次数

无法重现App Store审核小组正在进行的(IPv6?)连接问题

我遇到了iOS应用程序的IPv6问题.最初我在6月1日之前的几天提交了不了解IPv6要求(https://developer.apple.com/news/?id=05042016a).

它们在6月1日进行了审核,因IPv6不兼容/无法连接而被拒绝.我不想建立自己的IPv6网络,因此我更新了代码以符合要求 - 我将Apple提供的Reachability更新为最新版本.几年前我也在使用我自己的下载库,这是由前联合创始人编写的.它没有连接到IP地址,也没有Apple推荐的任何内容,所以我现在没有决定升级它.我也在使用旧版的AFNetworking.

我重新提交了一个应用程序.因同样的原因被再次拒绝.我去买了霹雳适配器并设置了IPv6.现在我连接到该应用程序.我也可以很好地连接到另一个仍然具有非常旧的可达性代码的应用程序.我的主要问题是我希望它能像Apple破解一样突破,所以我可以正确地修复它.

笔记:

- 我最初试图发表关于IPv6 App Store拒绝的评论,但它太长了.我是Twitter上的@andytriboletti,在那个问题上与Sean联系在一起.

- 我在Apple开发者论坛上发布了此内容,但它仍在等待10小时后批准:https: //forums.developer.apple.com/message/141461#141461

- 这就是我在Macbook pro上使用thunderbolt以太网适配器设置IPv6网络的方法.https://developer.apple.com/library/tvos/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html

- 我正在使用运行OS 9.3.2的iPhone 6进行测试.正如Apple链接到我的文章中描述的运行IPv6网络设置的Macbook Pro正在运行10.11.5.

- 我测试了Apple测试的确切版本.我使用buddybuild作为构建自动化工具,他们向我发送了一封电子邮件,其中包含上传到iTunes的版本.

- 该应用程序向https://greenrobot.com发送网络请求(并且还包括广告和分析库).我的代码中没有硬编码的IP地址.GreenRobot看起来像是为IPv6设置的:https://ip6.nl/#greenrobot.com

networking ipv6 ios

18
推荐指数
1
解决办法
1万
查看次数

getaddrinfo和IPv6

我试图了解getaddrinfo函数返回的内容:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netdb.h>

int main (int argc, char *argv[])
{


struct addrinfo *res = 0 ;

  getaddrinfo("localhost", NULL ,NULL,&res);
  printf("ai_flags -> %i\n", res->ai_flags) ;
  printf("ai_family -> %i\n", res->ai_family) ;
  printf("ai_socktype -> %i\n", res->ai_socktype) ;
  printf("ai_protocol -> %i\n", res->ai_protocol) ;
  printf("ai_addrlen -> %i\n", res->ai_addrlen) ;
  struct sockaddr_in* saddr = (struct sockaddr_in*)res->ai_addr;
  printf("ai_addr hostname ->  %s\n", inet_ntoa(saddr->sin_addr));

  freeaddrinfo(res);

  return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

结果:

ai_flags -> 40
ai_family -> 2
ai_socktype -> 1
ai_protocol -> …
Run Code Online (Sandbox Code Playgroud)

c network-programming ipv4 ipv6 getaddrinfo

17
推荐指数
3
解决办法
2万
查看次数

将IPv6转换为长到IPv6的转换

我应该如何执行从IPv6到long的转换,反之亦然?

到目前为止,我有:

    public static long IPToLong(String addr) {
            String[] addrArray = addr.split("\\.");
            long num = 0;
            for (int i = 0; i < addrArray.length; i++) {
                    int power = 3 - i;

                    num += ((Integer.parseInt(addrArray[i], 16) % 256 * Math.pow(256, power)));
            }
            return num;
    }

    public static String longToIP(long ip) {
            return ((ip >> 24) & 0xFF) + "."
                    + ((ip >> 16) & 0xFF) + "."
                    + ((ip >> 8) & 0xFF) + "."
                    + (ip & 0xFF);

    } …
Run Code Online (Sandbox Code Playgroud)

java ip type-conversion ipv6 long-integer

17
推荐指数
3
解决办法
2万
查看次数

为什么INET6_ADDRSTRLEN在C中定义为46?

以下程序及其输出显示INET_ADDRSTRLEN定义为16INET_ADDRSTRLEN定义为46.

这是程序.

#include <stdio.h>
#include <arpa/inet.h>

int main()
{
    printf("%d\n", INET_ADDRSTRLEN);
    printf("%d\n", INET6_ADDRSTRLEN);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是输出.

16
46
Run Code Online (Sandbox Code Playgroud)

我能理解为什么INET_ADDRSTRLEN需要16.IPv4地址的最大可能字符串表示消耗15个字节,例如"255.255.255.255".因此,需要16个字节来存储具有终止空字符的IP地址.

但为什么INET6_ADDRSTRLEN需要46呢?IPv6地址的最大可能字符串表示仅消耗39个字节(根据我的知识),例如"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff".因此,只需要40个字节来存储具有终止空字符的IP地址.

是否存在可以消耗46个字节的IPv6地址的字符串表示形式?

c sockets ipv6

17
推荐指数
2
解决办法
1万
查看次数

如何在MySQL中将IPv6从二进制转换为存储

我试图以有效的方式在MySQL 5.0中存储IPv6地址.我已经阅读了与此相关的其他问题,例如本文.该问题的作者最终选择了两个BIGINT字段.我的搜索也发现了另一种常用机制:使用DECIMAL(39,0)存储IPv6地址.我有两个问题.

  1. 使用DECIMAL(39,0)比其他方法(例如2*BIGINT)有什么优缺点?
  2. 如何将(在PHP中)从inet_pton()返回的二进制格式转换为MySQL可用的十进制字符串格式,以及如何转换回来以便我可以使用inet_ntop()进行漂亮打印?

php mysql ipv6

16
推荐指数
2
解决办法
2万
查看次数

标识适配器的首选IPv6源地址

如果您的IPv6主机具有多个全局范围地址,那么如何以编程方式识别首选地址bind()

示例地址列表:

eth0      Link encap:Ethernet  HWaddr 00:14:5e:bd:6d:da  
          inet addr:10.6.28.31  Bcast:10.6.28.255  Mask:255.255.255.0
          inet6 addr: 2002:dce8:d28e:0:214:5eff:febd:6dda/64 Scope:Global
          inet6 addr: fe80::214:5eff:febd:6dda/64 Scope:Link
          inet6 addr: 2002:dce8:d28e::31/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Run Code Online (Sandbox Code Playgroud)

在Solaris上,您可以使用接口标志指示首选地址,并通过SIOCGLIFCONF以下方式以编程方式提供:

/usr/include/net/if.h:
#define   IFF_PREFERRED   0x0400000000    /* Prefer as source address */
Run Code Online (Sandbox Code Playgroud)

如界面列表中所列:

eri0: flags=2104841<UP,RUNNING,MULTICAST,DHCP,ROUTER,IPv6> mtu 1500 index 2
        inet6 fe80::203:baff:fe4e:6cc8/10 
eri0:1: flags=402100841<UP,RUNNING,MULTICAST,ROUTER,IPv6,PREFERRED> mtu 1500 index 2
        inet6 2002:dce8:d28e::36/64 
Run Code Online (Sandbox Code Playgroud)

但这不适用于OSX,Linux,FreeBSD或Windows.从管理员的角度看,基于UUID的适配器名称(取决于Windows版本)完全没用,因此Windows很容易发布.

对于Linux,本文详细介绍了如何更改"生命周期" 的参数preferred_lft,以便lft内核对选择过程进行加权.此设置不会出现在结果方便可行的SIOCGIFCONF或者getifaddrs()虽然.

所以我想结合eth0,eri0或任何可用的接口名称.选择有点严峻:

  1. 适配器名称解析为多个接口失败.我采用这种方法来处理多播传输( …

linux macos solaris ipv6

16
推荐指数
1
解决办法
2280
查看次数

使用WebSocket接口调用IPV6 IP

[ 我已将此问题标记为由主持人删除,直到我得到回答问题为止 ]

说话时的Node.js(在Ubuntu上,更多的我的JavaScript客户端工作正常,在这里通过的WebSocket接口IPV4的IP地址)的服务器.

即使我的主机提供商已经准备好为我分配IPV4,但我现在改为使用IPV6,因为现在IPV4供应有限.

使用IPV6 IP时出现此错误:

WebSocket连接到'ws:// [2600:3c00 :: f03c:91ff:fe73:2b08]:31333 /'失败:连接建立错误:net :: ERR_ADDRESS_UNREACHABLE

我已经使用工具检查了端口31333是否确实打开:http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-port-scanner.php

我甚至尝试过在IPv6地址中提供解决方案,在internet explorer-10 websocket中给出语法错误 - 即:2600-3c00-0-0-f03c-91ff-fe73-2b08.ipv6-literal.net

我运行此客户端,并且能够在基于Ubuntu的远程服务器上运行时连接到服务器:

var WebSocket = require('ws')
  , ws = new WebSocket('ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333');
ws.on('open', function() {
    ws.send('something');
});
ws.on('message', function(message) {
    console.log('received: %s', message);
});
Run Code Online (Sandbox Code Playgroud)

但是,当我从家用Windows 7运行同一个客户端而服务器是远程Ubuntu时,它无法连接:

> $ node c2.js events.js:85
>       throw er; // Unhandled 'error' event
>             ^ Error: connect ENETUNREACH
>     at exports._errnoException (util.js:746:11)
>     at TCPConnectWrap.afterConnect [as oncomplete] …
Run Code Online (Sandbox Code Playgroud)

javascript ipv6 websocket google-chrome-extension node.js

16
推荐指数
1
解决办法
4206
查看次数

如何测试iOS应用程序是否支持IPv6?

我有2015年和2014年建立的应用程序.如何针对IPv6测试它们?
如果我的应用不支持IPv6,我该怎么办?

我的应用程序正在使用AFNetworking和Alamofire.我主要连接到域(例如api.example.com/v1/...).只有1个应用程序使用IP :(例如:12.12.12.12:3000/api/v1/...).

websockets有问题吗?(WS://12.12.12.12:8080/API/....).

ipv6 ios swift

16
推荐指数
1
解决办法
1万
查看次数