检索客户端IP:ranch

时间:2017-12-26 13:36:56

标签: erlang elixir phoenix-framework

我正在使用:ranch在我的Phoenix应用程序中接收TCP包。

首先,我使用以下命令在服务器中创建了一个侦听器:

:ranch.start_listener(tcp_echo, ranch_tcp, [{port, 5555}], echo_protocol, [] )

如何在echo_protocol

中打印客户端IP

1 个答案:

答案 0 :(得分:2)

Ranch包含sample echo application

echo_protocol.erl中,有一个init函数接受来自客户端的连接:

init(Ref, Socket, Transport, _Opts = []) ->
    ok = ranch:accept_ack(Ref),
    loop(Socket, Transport).

您可以在那里显示客户端IP地址:

init(Ref, Socket, Transport, _Opts = []) ->
    ok = ranch:accept_ack(Ref),
    {ok, {IpAddress, _}} = inet:peername(Socket),
    io:format("Client ~p~n", [IpAddress]),
    loop(Socket, Transport).

它将以如下格式显示:

Client {127,0,0,1}