Elixir/Erlang::ssl.start使用{:reuseaddr,true}在不同的IP上启动时返回{:error,:ready_listing}
我需要在主机同一端口的不同IP上打开两个DTLS套接字。 将:gen_udp与{:reuseaddr,true}一起使用,效果很好。 但不能使用ssl。请收听 您可以使用以下命令复制它: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
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
)外壳。