代码之家  ›  专栏  ›  技术社区  ›  casillic

如何在Erlang获得UDP的临时端口?

  •  1
  • casillic  · 技术社区  · 9 年前

    我在想办法打开一个短暂的港口( https://en.wikipedia.org/wiki/Ephemeral_port 基本端口而不必提供特定端口号以及来自短暂的端口范围)。这适用于通过UDP协议的客户端请求。我知道如何通过以下方式打开UDP通信的特定端口:

    {ok,Socket} = gen_udp:open(8000).
    

    但不必提前知道可用的端口号,只要系统提供一个端口号(如果可能的话)即可。 有什么建议或想法如何在二郎最好地做到这一点?

    1 回复  |  直到 9 年前
        1
  •  4
  •   zxq9    9 年前

    使用与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}