我正在使用:ranch在我的Phoenix应用程序中接收TCP数据包。
首先,我在服务器中创建了一个监听器:
:ranch.start_listener(tcp_echo, ranch_tcp, [{port, 5555}], echo_protocol, [] )
我怎样才能在echo_protocol
中打印客户端IP?
在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}