【问题标题】:In Erlang how to get Client's ip and port?在 Erlang 中如何获取客户端的 ip 和端口?
【发布时间】:2015-08-04 01:40:08
【问题描述】:

在以下代码中,服务器正在监听 2345 端口。在接受来自客户端的连接后,它返回 {ok, Socket}

start() ->  
{ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4},  
                                  {reuseaddr, true},  
                                  {active, true}]),  
{ok, Socket} = gen_tcp:accept(Listen).

我想获取客户端的IP和端口,如何通过socket分析获取?

【问题讨论】:

    标签: tcp erlang


    【解决方案1】:

    使用inet:peername/1。文档中的功能描述:

    peername(Socket) -> {ok, {Address, Port}} | {error, posix()}
    
                  Types:
    
                     Socket = socket()
                     Address = ip_address()
                     Port = integer() >= 0
    
                  Returns the address and port for the other end of a connection.
    

    【讨论】:

    • 谢谢!有没有像 peername 这样的 API,可以从 Socket 中获取服务器的 ip 和端口?
    • 在服务器的套接字上使用 peername 有什么困扰?
    • 我想他是在问服务器如何获取接受套接字的本地 IP 地址和端口号。为此,您可以使用inet:sockname/1。详情请见erlang.org/doc/man/inet.html#sockname-1
    • 谢谢!你说的就是我要的,我已经解决了问题。
    猜你喜欢
    • 2014-12-29
    • 1970-01-01
    • 2013-10-28
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多