将Erlang cast消息发送到全局gen_服务器

将Erlang cast消息发送到全局gen_服务器,erlang,gen-server,Erlang,Gen Server,这是普雷维奥斯的续集 我有gen_服务器: start(UserName) -> case gen_server:start({global, UserName}, player, [], []) of {ok, _} -> io:format("Player: " ++ UserName ++ " started"); {error, Error} -> Error end ... 如何正确地将消息发送

这是普雷维奥斯的续集

我有gen_服务器:

start(UserName) ->
    case gen_server:start({global, UserName}, player, [], []) of
    {ok, _} ->
        io:format("Player: " ++ UserName ++ " started");
    {error, Error} ->
        Error
    end
    ...
如何正确地将消息发送到此gen_服务器。例如:在我制作的另一个文件中:

gen_server:cast(test, message).
在我的gen_服务器文件中,我有:

handle_cast(message, State) ->
    io:format("Message receiving \r\n"),
    {noreply, State};
我使用测试名称启动gen_服务器:

服务器:启动(测试)。 测试开始了

当我调用
gen\u server:cast(测试,消息)。
它在shell中没有输出。我如何检查是否处理您的呼叫

谢谢。

代替

gen_server:cast(test, message).

如果将名称注册为{global,name},则必须将其命名为{global,name}


如果调用处理程序,它将在shell中打印“消息接收\r\n”。您是通过io:format调用实现的。

与其使用打印输出,为什么不使用跟踪呢?实际上,它只会崩溃-io:format接受两个参数。此外,它将在其组长打印的任何位置打印,这可能是您所在的shell,也可能不是。有函数io:format/1和io:format/2,因此它不会崩溃。至少在io:format调用中没有。是的,你是对的-io:format/1可以正常工作。我很想建议使用error\u logger:info\u msg/2而不是io:format来处理这类事情,因为输出几乎总是在有用的地方。对于一个普通的io:format调用来说,情况未必如此。
gen_server:cast({global, test}, message).