如何使用WebSocket接口调用IPv 6 IP?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (686)

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

即使我的主机提供商已准备好分配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);
});

但是,当我从家用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)

我甚至在谷歌浏览器中运行这些代码:

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 /'失败:连接建立时出错:net :: ERR_ADDRESS_UNREACHABLE websocket.html:37事件

可能是什么问题?

提问于
用户回答回答于

你的Realtek PCIe GBE系列控制器未启用IPv6。如果是这样,ipconfig结果中会有一行显示“Link-local IPv6 Address”。

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

用户回答回答于

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

扫码关注云+社区

领取腾讯云代金券