我有写在erlang和命令处理程序的tcp服务器。如果客户端连接到我的服务器,然后关闭如何捕捉网络断开连接?Erlang捕获断开客户端
0
A
回答
8
我认为你用香草gen_tcp来实现你的服务器。 在这种情况下,当套接字从客户端关闭时,acceptor进程(您传递Socket的进程)将收到{tcp_closed,Socket}消息。
来自erlang gen_tcp文档的示例代码。
start(LPort) -> case gen_tcp:listen(LPort,[{active, false},{packet,2}]) of {ok, ListenSock} -> spawn(fun() -> server(LS) end); {error,Reason} -> {error,Reason} end. server(LS) -> case gen_tcp:accept(LS) of {ok,S} -> loop(S), server(LS); Other -> io:format("accept returned ~w - goodbye!~n",[Other]), ok end. loop(S) -> inet:setopts(S,[{active,once}]), receive {tcp,S,Data} -> Answer = do_something_with(Data), gen_tcp:send(S,Answer), loop(S); {tcp_closed,S} -> io:format("Socket ~w closed [~w]~n",[S,self()]), ok end.
0
您是否使用单独的链接过程来处理来自每个客户端的命令? 如果是这样,你可以想到在主进程陷阱出口...
相关问题
- 1. 捕获客户端断开事件! - Gevent/Python
- 2. Playframework彗星socket捕获客户端断开连接
- 3. Erlang - Riak客户端
- 4. Ejabberd抓客户端断开
- 5. SecurityNegotiationException断开域客户端
- 6. 客户端立即断开
- 7. SignalR:客户端断开
- 8. 客户端断开连接
- 9. 断开node-xmpp客户端
- 10. TCP客户端断开
- 11. 如何在服务器端捕获客户端的连接和断开连接?
- 12. Erlang SIP客户端库
- 13. Twitter流API - Erlang客户端
- 14. erlang AMQP客户端库
- 15. erlang rabbitmq客户端池
- 16. Erlang的Websocket客户端
- 17. 寻找Erlang SMPP客户端
- 18. 客户端从其他客户端收到消息时断开
- 19. ASP.NET - 在长时间运行的HTTP请求上捕获客户端断开
- 20. 断开客户
- 21. Websocket客户端断开连接websocket4net
- 22. Comet和NIO - 客户端断开
- 23. 从IHubContext断开客户端<THub>
- 24. bottle.py在客户端断开时挂起
- 25. 处理TCP客户端断开连接
- 26. VerneMQ插件强制断开客户端
- 27. 告诉HTTP客户端是否断开
- 28. “客户端断开连接”HttpException
- 29. 登录期间客户端断开
- 30. 断开wcf客户端的问题
请提供更多的细节,也许一些代码。 – 2011-05-04 08:32:07