我试图找到一种方法来打开一个短暂的端口(https://en.wikipedia.org/wiki/Ephemeral_port基本端口,而不必提供特定的端口号,以及短暂的端口范围)。这是通过UDP协议的客户端请求。我知道如何通过以下方式打开UDP通信的特定端口:
{ok,Socket} = gen_udp:open(8000).
但是,不要提前知道可用的端口号,只要系统提供一个,如果可能的话。 在Erlang中如何做到这一点有任何建议或想法?
答案 0 :(得分:3)
以与在C中相同的方式执行:指定端口0。
1> {ok, S1} = gen_udp:open(0).
{ok,#Port<0.541>}
2> {ok, S2} = gen_udp:open(0).
{ok,#Port<0.547>}
3> {ok, S3} = gen_udp:open(0).
{ok,#Port<0.548>}
4> inet:port(S1).
{ok,55398}
5> inet:port(S2).
{ok,44963}
6> inet:port(S3).
{ok,58993}