关闭tcp套接字的erlang

Posted

技术标签:

【中文标题】关闭tcp套接字的erlang【英文标题】:erlang who close the tcp socket 【发布时间】:2015-09-04 00:22:04 【问题描述】:

http://erlangcentral.org/wiki/index.php/Building_a_Non-blocking_TCP_server_using_OTP_principles描述了如何搭建一个非阻塞的tcp服务器,还有一个关于inet_async消息的问题。

handle_info(inet_async, ListSock, Ref, Error, #statelistener=ListSock, acceptor=Ref = State) ->
    error_logger:error_msg("Error in socket acceptor: ~p.\n", [Error]),
    stop, Error, State;

如果Error = error, close,谁关闭socket、客户端或服务器?

【问题讨论】:

【参考方案1】:

这取决于,如果您收到该错误,则可能一开始就没有打开套接字。因此,如果您尝试gen_tcp:send(Socket, "Message"),您会发现连接已关闭。

连接关闭的其他原因可能是侦听套接字在等待连接时超时,或者在尝试发送消息之前调用了gen_tcp:close(Socket)

您还需要确保连接到服务器最初打开侦听套接字的端口。因此,要回答您的问题,可以关闭连接。

【讨论】:

以上是关于关闭tcp套接字的erlang的主要内容,如果未能解决你的问题,请参考以下文章

生成后,Tcp Socket 在 erlang 中的远程节点上不起作用,错误,关闭?

Erlang 套接字发送超时永远不会发生

在 Erlang 中通过 tcp 套接字发送元组

为啥套接字关闭 Erlang

在erlang中中断gen_tcp:recv

erlang 发送套接字西里尔文数据