【问题标题】:Erlang-Pid controlErlang-Pid 控制
【发布时间】:2013-08-25 10:22:49
【问题描述】:

我在 Erlang 中编写了一个简单的聊天服务器(没有任何套接字或端口,只是在多个 shell 之间发送消息),但是当我尝试模拟它时,我遇到了一些问题。 在我的实现中,几乎每个客户端功能(如 pm、say_to_all)都需要 Chat_server-s 进程 ID。 如果我在一个 shell 中打开 chat_server 和 client,我可以很容易地绑定 chat_server 的进程 ID 并在必要时访问它,但是当我想为 client 打开另一个 shell 时就会出现问题。 看图 --> http://s018.radikal.ru/i501/1308/ee/a194aa8486ae.png 如何从第二个 shell (chat_client) 访问第一个 shell (chat_server) 的进程?

【问题讨论】:

    标签: erlang pid


    【解决方案1】:

    您可以使用特定名称 (http://erlang.org/doc/man/global.html#register_name-2) 全局注册您的服务器。这样,您就可以从聊天系统中的任何 shell 访问服务器。

    别忘了,你需要先用 net_adm:ping 连接 shell,让 shell 知道全局注册的名称。

    我真的建议您研究一下 gen_server (http://www.erlang.org/doc/man/gen_server.html),因为它在尝试组织客户端-服务器结构时真的很有帮助。

    编辑: 抱歉,也许您还想解释您的问题。 这是因为每个 erlang-shell 都有自己的环境和自己的变量等。这意味着第二个 shell 不知道其他 shell 的任何变量。

    【讨论】:

    • 非常感谢。 erlang 全局模块对我帮助很大,现在我的代码可以工作了 :)
    • 很高兴能为您提供帮助。
    猜你喜欢
    • 2012-10-17
    • 2012-02-25
    • 2013-05-25
    • 2011-03-10
    • 2012-09-30
    • 2014-11-30
    • 1970-01-01
    • 2015-08-22
    • 2015-03-17
    相关资源
    最近更新 更多