我需要在主机的同一端口上打开两个不同IP上的DTLS套接字。将**:gen_udp与{:reuseaddr,true}一起使用可以正常工作。但与:ssl.listen**一起使用则不行
您可以使用以下命令重新生成它:
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,:already_listening}不匹配
如何使用**:ssl.listen和:reuseaddr**选项在主机的同一端口上启动不同IP地址上的两个DTLS套接字?
2条答案
按热度按时间wko9yo5t1#
这是一个Erlang错误。该问题已在OTP 23.3中解决。
https://github.com/erlang/otp/issues/4375
7nbnzgx92#
对于IPV6,
::1/128
是默认情况下分配给环回接口lo
的唯一地址。您还需要将
::2/128
分配给环回接口。