【发布时间】:2018-06-07 08:15:02
【问题描述】:
我正在使用 :ranch 在我的 Phoenix 应用程序中接收 TCP 包。
首先我在服务器中创建了一个监听器:
:ranch.start_listener(tcp_echo, ranch_tcp, [{port, 5555}], echo_protocol, [] )
如何在echo_protocol 中打印客户端 IP?
【问题讨论】:
-
我没用过ranch,但是你不需要用ranch明确发出accept吗?这通常是我希望看到的模式。接受后,有关客户端的信息应该可用。
-
@DonBranson 在牧场我使用
:ranch.accept_ack(ref)发送了确认包。ref是该示例的tcp_echo的别名,我无法从那里检索 IP。也许有可能,但我真的不知道要调用哪个函数,并且文档没有清楚地显示它。 -
猜想:你有没有试过检查
:ranch.start_listener返回的PID的进程字典?你需要一个对callinet:peername/1的套接字的引用。
标签: erlang elixir phoenix-framework