使用WebSocket接口调用IPV6 IP
Calling IPV6 IP using WebSocket interface
[我已将此问题标记为由版主删除,直到我得到我的 this 问题的答案]
我的 javascript 客户端在通过具有 IPV4 IP 地址的 WebSocket 接口与 node.js(在 Ubuntu,更多 here)服务器通信时工作正常。
尽管我的托管服务提供商已准备好分配给我 IPV4,但让我改为使用 IPV6,因为现在 IPV4 供应有限。
使用 IPV6 IP 时出现此错误:
WebSocket connection to 'ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333/'
failed: Error in connection establishment:
net::ERR_ADDRESS_UNREACHABLE
我已经使用工具http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-port-scanner.php
检查端口 31333 确实打开了
我什至尝试过 IPv6 address giveing syntax error in 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 connection to 'ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333/'
failed: Error in connection establishment:
net::ERR_ADDRESS_UNREACHABLE websocket.html:37 Event
可能是什么问题?
PS: 目前我已经在端口 31333 停止了服务器。
您的 Realtek PCIe GBE 系列控制器未启用 IPv6。如果是,在 ipconfig 结果中会有一行说 "Link-local IPv6 Address"。
转到控制面板 > 网络 > 更改适配器设置 > 右键单击适配器 > 属性。检查 IPv6。
需要在系统上启用 IPv6,它与 ISP 之间的每个路由器,以及 ISP 都必须准备好 IPv6 并将其提供给最终用户。 nslookup
起作用的原因是它只是返回 AAAA 记录,而不是实际通过 IPv6 连接。 IPv4 不能直接与 IPv6 通信,反之亦然。不能用 IPv4 主机 ping 通 IPv6 主机。
[我已将此问题标记为由版主删除,直到我得到我的 this 问题的答案]
我的 javascript 客户端在通过具有 IPV4 IP 地址的 WebSocket 接口与 node.js(在 Ubuntu,更多 here)服务器通信时工作正常。
尽管我的托管服务提供商已准备好分配给我 IPV4,但让我改为使用 IPV6,因为现在 IPV4 供应有限。
使用 IPV6 IP 时出现此错误:
WebSocket connection to 'ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333/' failed: Error in connection establishment: net::ERR_ADDRESS_UNREACHABLE
我已经使用工具http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-port-scanner.php
检查端口 31333 确实打开了我什至尝试过 IPv6 address giveing syntax error in 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 connection to 'ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333/' failed: Error in connection establishment: net::ERR_ADDRESS_UNREACHABLE websocket.html:37 Event
可能是什么问题?
PS: 目前我已经在端口 31333 停止了服务器。
您的 Realtek PCIe GBE 系列控制器未启用 IPv6。如果是,在 ipconfig 结果中会有一行说 "Link-local IPv6 Address"。
转到控制面板 > 网络 > 更改适配器设置 > 右键单击适配器 > 属性。检查 IPv6。
需要在系统上启用 IPv6,它与 ISP 之间的每个路由器,以及 ISP 都必须准备好 IPv6 并将其提供给最终用户。 nslookup
起作用的原因是它只是返回 AAAA 记录,而不是实际通过 IPv6 连接。 IPv4 不能直接与 IPv6 通信,反之亦然。不能用 IPv4 主机 ping 通 IPv6 主机。