我用Socket模块和version: 6创建了一个UDP套接字。我希望它只听IPv6 (默认情况下,version: 6同时监听v4和v6)。Erlang的inet模块有一个ipv6_v6only选项,但我不知道在使用Elixir的Socket模块时如何使用。在调用:inet.setopts/2之后调用Socket.UDP.open/2总是生成一个{:error, :einval}。有代码示例吗?
(我知道我可以通过在Linux上调优net.ipv6.bindv6only sysctl来实现这一点,但是我更喜欢不需要根用户的解决方案。)
发布于 2022-05-06 11:49:16
Socket.UDP.open/2被有效地路由到:gen_udp.open/2,后者接受open_option()类型的关键字作为第二个参数,这反过来又是一个扩展类型option()。
与以下几点一起使用
Socket.UDP.socket(port, version: 6)从我上面链接的arguments/1实现可以很容易地看出这一点。
https://stackoverflow.com/questions/72139197
复制相似问题