使用WebSocket接口调用IPV6 IP

[ 我已经标记了这个问题,被版主删除,直到我得到我的这个问题的答案 ]

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

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

当使用IPV6 IP时,我得到这个错误:

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

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

我甚至尝试过的解决scheme,如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); }); 

但是,当我从家里的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] (net.js:1010:19) 

我甚至在Google Chrome中运行这个代码:

 var ws = new WebSocket("ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333"); ws.onerror = function(err) { console.log(err); alert("Connection is error..."); }; 

但是我得到了同样的错误:

WebSocket连接到'ws:// [2600:3c00 :: f03c:91ff:fe73:2b08]:31333 /'失败:连接build立时出错:net :: ERR_ADDRESS_UNREACHABLE websocket.html:37事件

可能是什么问题?

PS:目前我已经停止在31333端口的服务器。

您的Realtek PCIe GBE系列控制器未启用IPv6。 如果是这样的话,ipconfig结果中会出现一个“Link-local IPv6 Address”。

转到控制面板>networking>更改适配器设置>右键单击适配器>属性。 检查IPv6。

IPv6将需要在系统上启用,并且它与ISP之间的每个路由器以及ISP必须准备好IPv6,并将其提供给最终用户。 nslookup工作原因是它只是返回AAAAlogging,而不是通过IPv6实际连接。 IPv4不能直接与IPv6通信,反之亦然。 您无法使用IPv4主机ping IPv6主机。