gpt4 book ai didi

erlang - 帮助理解错误报告

转载 作者:行者123 更新时间:2023-12-02 09:35:02 24 4
gpt4 key购买 nike

任何人都可以解释为什么我在运行时出现以下错误:erl -noshell -s simple_server 然后telnet 127.0.0.1 1084?代码本身位于错误消息下方。

=ERROR REPORT==== 13-Aug-2011::23:12:05 === Error in process <0.30.0> with exit value: {{badmatch,{error,closed}},[{simple_server,wait_accept,1}]}

  -module(simple_server).
-compile(export_all).

start() ->
{ok, ListenSoc} = gen_tcp:listen(1084, [binary, {active, false}]),
wait_accept(ListenSoc).

wait_accept(ListenSoc) ->
{ok, Socket} = gen_tcp:accept(ListenSoc),
spawn(?MODULE, wait_accept, [ListenSoc]),
send_resp(Socket).

send_resp(Socket) ->
gen_tcp:send(Socket, "Response from simple server...\n"),
ok = gen_tcp:close(Socket).

最佳答案

这件事:

{{badmatch,{error,closed}},
[{simple_server,wait_accept,1}]}

应解读为:“我们位于 simple_server:wait_accept/1”,并且我们收到了错误匹配错误(请参阅 http://www.erlang.org/doc/reference_manual/errors.html#id81191 )。这意味着我们的匹配表达式

{ok, Socket} = gen_tcp:accept(ListenSock),

返回{error, close}(因为它是该函数中唯一的匹配表达式,所以很简单)。为什么它返回对我来说有点模糊。最好的选择是调用 start/0 函数的进程已终止,然后监听套接字已因该终止而关闭(这会自动发生)。请注意,erlang shell 中的错误将重新启动它并因此关闭监听套接字。

关于erlang - 帮助理解错误报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7054757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com