Erlang gen_tcp连接仅在同一网络上工作

Erlang gen_tcp连接仅在同一网络上工作,erlang,gen-tcp,Erlang,Gen Tcp,正如问题所述,当我设置服务器时,它可以在同一网络(不同的计算机但相同的wifi)上接收来自客户端的消息,但当客户端在另一个网络上时,它无法到达服务器,我不知道为什么它不能。有人能帮忙吗 -module(client). -export([client/2, clientDNS/4]). client(PortNo,Message) -> IP = {1, 1, 1, 1}, % Edited for privicy {ok,Sock} = gen_tcp:connect(IP,PortN

正如问题所述,当我设置服务器时,它可以在同一网络(不同的计算机但相同的wifi)上接收来自客户端的消息,但当客户端在另一个网络上时,它无法到达服务器,我不知道为什么它不能。有人能帮忙吗

-module(client).
-export([client/2, clientDNS/4]).
client(PortNo,Message) ->
IP = {1, 1, 1, 1},  % Edited for privicy
{ok,Sock} = gen_tcp:connect(IP,PortNo,[{active,false},{packet,1}]),
Data = term_to_binary(Message),
gen_tcp:send(Sock,Data),
{ok, A} = gen_tcp:recv(Sock,0),
gen_tcp:close(Sock),
Tmp = list_to_binary(A),
Res = binary_to_term(Tmp),
Res.


-module(server_http).
-export([start/1, server/2, loop/2]).

start(LPort) ->
case gen_tcp:listen(LPort,[{active, false},{packet,1}]) of
    {ok, ListenSock} ->
        start_servers(ListenSock),
        {ok, Port} = inet:port(ListenSock),
        Port;
    {error,Reason} ->
        {error,Reason}
end.

start_servers(LS) ->
Pid = setup:setupServer(),
spawn(?MODULE,server,[Pid, LS]),
ok.

server(Pid, LS) ->
case gen_tcp:accept(LS) of
    {ok,S} ->
        loop(Pid, S),
        server(Pid, LS);
    Other ->
        io:format("accept returned ~w - goodbye!~n",[Other]),
        ok
end.

loop(Pid, S) ->
inet:setopts(S,[{active,once}]),
receive
    {tcp,S,Data} ->
        Tmp = list_to_binary(Data),
        case binary_to_term(Tmp) of
            {Mod, Inputs} -> Answer = server:Mod(Pid, Inputs),
                             Res = term_to_binary(Answer),
                             gen_tcp:send(S,Res),
                             loop(Pid, S);
            {Mod}         -> Answer = server:Mod(Pid),
                             Res = term_to_binary(Answer),
                             gen_tcp:send(S,Res),
                             loop(Pid, S)
        end;
    {tcp_closed,S} ->
        io:format("Socket ~w closed [~w]~n",[S,self()]),
        ok;
    _ -> loop(Pid, S)

end.

感谢您在这方面的帮助:)


原来是主机上的路由器打开了端口,但是源IP地址被设置为主机IP地址,我猜这会以某种方式将其限制为仅来自网络本身的呼叫:)

远程计算机可以使用telnet访问端口吗?我敢打赌,NAT会阻止未列入白名单的端口,从而阻止
gen_tcp
愉快地连接。我当然也这么认为,但我尝试在另一个网络上打开相同的端口,以查看这是否是问题,但它没有做任何事情:/