I'm trying to get a simple erlang server to work where I'm trying to register the server, pass messages to the server which should register and create 2 processes on a different Node but I'm getting this error:
{badarg,[{erlang,register,[printer1,<12172.86.0>],[]},
{testerl,server,1,[{file,"testerl.erl"},{line,13}]}]}
My code:
-module(testerl).
-export([start_server/1,
server/1,
printer/0
]).
server(Node_1) ->
receive
finished ->
exit(normal);
{Message} ->
register(printer1, spawn(Node_1, testerl, printer, [])),
register(printer2, spawn(Node_1, testerl, printer, [])),
{printer1, Node_1} ! {Message},
{printer2, Node_1} ! {Message},
server(Node_1)
end.
printer() ->
receive
finished->
exit(normal);
{Message} ->
io:format("printer received msg ~p~n", [Message]),
server ! finished
end.
start_server(Node_1) ->
register(server, spawn(testerl, server, [Node_1])).
I can start the 2 Nodes with erl -sname [name], start the server with the name of the other Node but when I try to pass a message with server ! "some message" it crashes. What am I doing wrong here? How can i register a process and call it so it executes on the other machine?