在Erlang中如何获取客户端的IP和端口?

4
在下面的代码中,服务器正在监听端口2345。在接受客户端连接后,它会返回{ok, Socket}
start() ->  
{ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4},  
                                  {reuseaddr, true},  
                                  {active, true}]),  
{ok, Socket} = gen_tcp:accept(Listen).

我想通过分析socket来获取客户端的IP和端口,要怎么做呢?

1个回答

6

使用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和端口? - jianwei
什么让你不使用peername与服务器套接字? - Danil Onishchenko
我认为他在问服务器如何获取已接受套接字的本地IP地址和端口号。为此,您可以使用inet:sockname/1。有关详细信息,请参见http://www.erlang.org/doc/man/inet.html#sockname-1。 - Steve Vinoski
谢谢!你说的正是我所问的,我已经找出了问题。 - jianwei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接