【发布时间】:2018-08-06 21:54:47
【问题描述】:
我想通过 Elixir 监听 2 个端口。不过,我设法监听了端口。但是,我无法从第二个端口获取数据。
def accept() do
{:ok, socket} = :gen_tcp.listen(7777, [:binary, packet: 0, active: false, reuseaddr: true])
{:ok, httpSocket} =
:gen_tcp.listen(8787, [:binary, packet: 0, active: false, reuseaddr: true])
http_loop_acceptor(httpSocket)
loop_acceptor(socket)
end
defp http_loop_acceptor(socket) do
{:ok, client} = :gen_tcp.accept(socket)
pid = spawn(fn -> http_serve(client) end)
:ok = :gen_tcp.controlling_process(client, pid)
http_loop_acceptor(socket)
end
defp loop_acceptor(socket) do
{:ok, client} = :gen_tcp.accept(socket)
pid = spawn(fn -> serve(client) end)
:ok = :gen_tcp.controlling_process(client, pid)
loop_acceptor(socket)
end
我可以将数据发送到8787端口(httpSocket)。但是,我无法向 7777(套接字)发送任何数据。
如果改变这两行的顺序,我可以发送数据到7777(socket),我不能发送任何数据到8787端口。 p>
http_loop_acceptor(httpSocket)
loop_acceptor(socket)
如何监听多个端口并通过这些端口接收数据?
【问题讨论】:
标签: networking network-programming erlang elixir gen-tcp