Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Erlang中生成简单服务器_Erlang - Fatal编程技术网

无法在Erlang中生成简单服务器

无法在Erlang中生成简单服务器,erlang,Erlang,我有一个简单的服务器: -module(simple_server). -export([loop/0]). loop() -> receive {fact, N, Sender} -> Sender ! {factResult, fact(N), self()}, loop(); {fib, N, Sender} -> Sender ! {fibResult, fib(N), self()},

我有一个简单的服务器:

-module(simple_server).
-export([loop/0]).

loop() ->
    receive 
    {fact, N, Sender} ->
        Sender ! {factResult, fact(N), self()},
        loop();
    {fib, N, Sender} ->
        Sender ! {fibResult, fib(N), self()},
        loop();
    {stop, Sender} ->
        Sender ! ok
    end.

fact(0) -> 1;
fact(N) -> N * fact(N - 1).

fib(N) -> fib(N, 1, 0).

fib(0, _B, A) -> A;
fib(N, B, A) -> fib(N-1, A+B, B).
然后我得到这个:

...\code>erl simple_server.erl

Eshell V5.7.5  (abort with ^G)
1> Server = spawn('server@myserver', fun simple_server:loop/0).

=ERROR REPORT==== 28-Jun-2010::10:46:29 ===
** Can not start erlang:apply,[#Fun<simple_server.loop.0>,[]] on server@myserver**
<0.33.0>

我错过了什么?

您应该先阅读文档。一些教程会很有帮助

带有模块源代码的erl没有任何功能。阅读erl-MANERL了解更多信息。 erlang:apply\2将节点作为第一个参数,但节点应该存在并且必须连接到当前节点。 你应该试试:

$ erl
Erlang R13B04 (erts-5.7.5) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.5  (abort with ^G)
1> c(simple_server).
{ok, simple_serevr}
2> spawn(simple_server, loop, []).
<0.33.0>
3>

这是一个很好的起点。

它看起来不像是一个分布式节点。当使用的-sname/-name标志在没有短名称/长名称的情况下启动shell erlang节点时,我会收到相同的错误消息

如果启动此shell以便它可以参与分发,则还必须确保simple_server的代码已加载到远程节点,或者远程节点可以从其代码路径自动加载

对于交互式使用,可以使用shell中的ncFile或nlModule命令在所有已知节点上加载。如果在执行erlang:nodes时节点尚未列出,请使用net_adm:pingNode对其进行ping