Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir/Erlang::ssl.start使用{:reuseaddr,true}在不同的IP上启动时返回{:error,:ready_listing}_Erlang_Elixir - Fatal编程技术网

Elixir/Erlang::ssl.start使用{:reuseaddr,true}在不同的IP上启动时返回{:error,:ready_listing}

Elixir/Erlang::ssl.start使用{:reuseaddr,true}在不同的IP上启动时返回{:error,:ready_listing},erlang,elixir,Erlang,Elixir,我需要在主机同一端口的不同IP上打开两个DTLS套接字。 将:gen_udp与{:reuseaddr,true}一起使用,效果很好。 但不能使用ssl。请收听 您可以使用以下命令复制它: sudo ip addr add ::2 dev lo 然后在iex中 :ssl.start {:ok, socket} = :ssl.listen(20_100, [ :binary, :inet6, {:active, true}, {:reuseaddr, true}, {:pro

我需要在主机同一端口的不同IP上打开两个DTLS套接字。 将:gen_udp{:reuseaddr,true}一起使用,效果很好。 但不能使用ssl。请收听

您可以使用以下命令复制它:

sudo ip addr add ::2 dev lo
然后在iex中

:ssl.start

{:ok, socket} = :ssl.listen(20_100, [
  :binary,
  :inet6,
  {:active, true},
  {:reuseaddr, true},
  {:protocol, :dtls},
  {:ip, {0, 0, 0, 0, 0, 0, 0, 1}}
])

{:ok, socket2} = :ssl.listen(20_100, [
  :binary,
  :inet6,
  {:active, true},
  {:reuseaddr, true},
  {:protocol, :dtls},
  {:ip, {0, 0, 0, 0, 0, 0, 0, 2}}
])
最后一个:ssl.listen将与{:error,:ready_listening}不匹配


如何使用:ssl。使用:reuseaddr选项侦听,在主机同一端口的不同IP地址上启动两个DTLS套接字?

在IPV6情况下,
::1/128
是默认情况下分配给环回接口的唯一地址
lo


您还需要将
::2/128
分配给环回接口。然后第二个
:ssl:listen()
就可以工作了

这是一个Erlang Bug。该问题在OTP 23.3中得到了解决


我就是这样做的:sudo ip addr add::2 dev lo不存在的ip的错误消息也不同。请尝试sudo ip-6 addr add::2/128 dev loThanks以获得建议。我试过了,还是一样的问题。至少在我的操作系统(Ubuntu18)上,不需要-6选项并用/128指定前缀长度。sudo ip addr add::2 dev lo和ip-6 addr add::2/128 dev lo在我使用ifconfig查看接口时会产生相同的结果。这真的很奇怪,我能够在erlang(
erl
)shell中使用相同的端口创建两个侦听套接字,但使用两个不同的ip地址{0,0,0,0,0,0,1}和{0,0,0,0,0,2},而不是Elixir(
iex
)外壳。