У меня есть простой сервер на OpenShift от Erlang, который создает сокет и ждет новых соединений. Локальный ip для сервера - 127.10.206.129
, а сервер прослушивает 16000
порт. код моего сервера:Как подключиться к сокету TCP
-module(chat).
-export ([start/0, wait_connect/2, handle/2]).
start() ->
{ok, ListenSocket} = gen_tcp:listen(16000, [binary, {ip,{127,10,206,129}}]),
wait_connect(ListenSocket, 0).
wait_connect(ListenSocket, Count) ->
io:format("~s~n", ["Wait..."]),
gen_tcp:accept(ListenSocket),
receive
{tcp, _Socket, Packet} ->
handle(Packet, Count),
spawn(?MODULE, wait_connect, [ListenSocket, Count+1]);
{tcp_error, _Socket, Reason} ->
{error, Reason}
end.
код моего клиента:
-module(client).
-export ([client/2]).
client(Host, Data) ->
{ok, Socket} = gen_tcp:connect(Host, 16000, [binary]),
send(Socket, Data),
ok = gen_tcp:close(Socket).
send(Socket, <<Data/binary>>) ->
gen_tcp:send(Socket, Data).
Сервер запускается без проблем. Я попытался запустить клиент на моем локальном хосте и был ошибка (он пытался подключиться к времени много, чем тайм-аут:
2> client:client("chat-bild.rhcloud.com", <<"Hello world!">>).
** exception error: no match of right hand side value {error,etimedout}
in function client:client/2 (client.erl, line 4)
Я попытался этим глупый путем (хотя 127.10.206.129 это неправильный IP, потому что локальный сервер IP):
3> client:client({127,10,206,129}, <<"Hello world!">>).
** exception error: no match of right hand side value {error,econnrefused}
in function client:client/2 (client.erl, line 16)
Как сделать gen_tcp: соединиться с URL