正确使用gen_tcp的方法:连接IPv6地址

时间:2017-06-20 16:01:35

标签: erlang gen-tcp

有谁知道如何连接到ipv6 tcp服务器地址。以下尝试但无效。

{ok, Socket} = gen_tcp:connect("2a01:488:67:1000:253d:cd31:0:1", 5000, [{active, false},inet6]).
{error,enetunreach}

这个

{ok, Socket} = gen_tcp:connect("[2a01:488:67:1000:253d:cd31:0:1]", 5000, [{active, false},inet6]).
{error,nxdomain}

但是可以通过IPv4访问服务器。

感谢。

3 个答案:

答案 0 :(得分:1)

在外壳A上:

$erl

{ok, LSocket} = gen_tcp:listen(12345, [binary, {packet, line}, {active, true}, {reuseaddr, true}, inet6, {ip, {0,0,0,0,0,0,0,1}}]).

在外壳B上进行测试:

$telnet ::1 12345

答案 1 :(得分:0)

根据gen_tcp模块的手册页,connect/3-4的第一个参数应为inet:socket_address()inet:hostname()的类型。
尝试使用This类型的形式。

答案 2 :(得分:0)

代替(0,0,0,0,0,0,0,1}。我们还可以使用您自己的IPv6地址。 使用 inet:parse_address(“您的IP地址”)。