【发布时间】:2014-01-21 06:32:06
【问题描述】:
我在 Erlang 中创建了一个服务器,但遇到了一个我无法解决的问题。我有我的服务器和一个客户端,服务器监听客户端发送一条消息,在控制台中输出它然后什么也不做。我试图让他“活着”等待很多客户的消息并回答他们。
这是代码
init(PortNumber) ->
server_logger:init(),
% default options = [data type, socket work mode]
DefaultOptions = [binary, {packet, 0}, {active, false}, {reuseaddr, true}],
case gen_tcp:listen(PortNumber, DefaultOptions) of
{ok, ListenSocket} ->
server_logger:print_fmsg("Listening on port: ~B", [PortNumber]),
server_logger:print_newline(),
server_logger:print_fmsg(": ", []),
case gen_tcp:accept(ListenSocket) of
{ok, Socket} ->
{ok, Bin} = do_recv(Socket, []),
ok = gen_tcp:close(Socket),
Bin;
{error, closed} ->
server_logger:print_msg("The connection is closed and cannot listen.")
end;
{error, Reason} ->
server_logger:print_fmsg("Cannot listen, cause: ~w", [Reason])
end.
do_recv(Socket, Bs) ->
case gen_tcp:recv(Socket, 0) of
{ok, B} ->
case B of
%do_recv(Socket, [Bs, B]);
_ -> gen_tcp:send(Socket, "Hellllooooooooooo")
end;
{error, closed} ->
{ok, list_to_binary(Bs)}
end.
我不知道我在做什么是否正确,例如:我有服务器的控制台,我用server:init(8889) 初始化他,在 cmd 我输入 telnet localhost 8889 然后我按回车它说喂喂喂喂喂。或者我也可以在 Erlang 中使用我的客户端,但关键是如何让服务器通过 telnet 或客户端接口发送连接到他的消息?
【问题讨论】: