【发布时间】:2016-03-03 01:46:24
【问题描述】:
您好,问题是我在 erlang 中创建了一个 tcp 服务器套接字,然后在接受该套接字后,我想在另一个节点上处理它,但它给出了 {error, closed}。
一个小演示:-
-module(tcp_server).
-compile(export_all). %% just for testing
start() ->
{ok, ListeningSocket} = gen_tcp:listen(4444, [{active, false}, binary]),
wait_for_next(ListeningSocket).
wait_for_next(ListeningSocket) ->
%% waiting for requests
{ok, Socket} = gen_tcp:accept(ListeningSocket),
_ = spawn('remote@127.0.0.1', ?MODULE, handle_request, [Socket]),
wait_for_next(ListeningSocket).
handle_request(Socket) ->
{ok, Data} = gen_tcp:recv(Socket, 0), %% this always return {error, closed} ??
io:format("~p~n", [Data]),
gen_tcp:close(Socket).
启动服务器:
erl -name server@127.0.0.1
c(tcp_server). %% compile and load
tcp_server:start(). %% started
远程节点:
erl -name remote@127.0.0.1
c(tcp_server). %% so here handle_request has been loaded
远程节点也可以在另一台机器上? 我在做什么错?或者这可能吗, 抱歉英语不好,提前感谢! ;)
【问题讨论】: