关闭tcp套接字的erlang

时间:2015-06-18 11:25:52

标签: sockets tcp erlang otp

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}, #state{listener=ListSock, acceptor=Ref} = State) ->
    error_logger:error_msg("Error in socket acceptor: ~p.\n", [Error]),
    {stop, Error, State};

如果Error = {error,close},谁关闭套接字,客户端或服务器?

1 个答案:

答案 0 :(得分:1)

这取决于,如果您收到该错误,则可能尚未首先打开套接字。因此,如果您尝试gen_tcp:send(Socket, "Message"),您将会看到连接已关闭。

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

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