我有寫在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