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},谁关闭套接字,客户端或服务器?
答案 0 :(得分:1)
这取决于,如果您收到该错误,则可能尚未首先打开套接字。因此,如果您尝试gen_tcp:send(Socket, "Message")
,您将会看到连接已关闭。
连接关闭的其他原因可能是侦听套接字在连接上等待超时,或者在尝试发送消息之前调用了gen_tcp:close(Socket)
。
此外,您需要确保连接到服务器最初打开侦听套接字的同一端口。所以要回答你的问题,可以关闭连接。