1

それは前の質問の続きです

私はgen_serverを持っています:

start(UserName) ->
    case gen_server:start({global, UserName}, player, [], []) of
    {ok, _} ->
        io:format("Player: " ++ UserName ++ " started");
    {error, Error} ->
        Error
    end
    ...

このgen_serverにメッセージを正しく送信する方法。例:別のファイルで私は次のように作成します:

gen_server:cast(test, message).

私のgen_serverファイルには次のものがあります。

handle_cast(message, State) ->
    io:format("Message receiving \r\n"),
    {noreply, State};

gen_serverをテスト名で開始します。

server:start(test)。テスト開始

私が呼び出すとき、gen_server:cast(test, message).それはシェルに何も出力されません。handle_castの呼び出しを確認するにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

4

それ以外の

gen_server:cast(test, message).

書きます

gen_server:cast({global, test}, message).

nameを{global、name}として登録する場合は、{global、name}と呼ぶ必要があります

ハンドラーが呼び出されると、シェルに「メッセージ受信\ r\n」が出力されます。io:format呼び出しでそれを行いました。

于 2011-04-20T08:57:43.657 に答える