【发布时间】:2014-06-04 07:06:43
【问题描述】:
我有以下使用 gen_tcp OTP 模块的 Elixir 编写的 TCP 服务器:
defmodule Test do
def server() do
{:ok, listen_sock} = :gen_tcp.listen(43594, [{:active, true}, :binary])
{:ok, accept_sock} = :gen_tcp.accept(listen_sock)
spawn(fn() -> poll(accept_sock) end)
end
defp poll(sock) do
case :gen_tcp.recv(sock, 0, 20) do
{:ok, data} ->
IO.puts "#{data}"
poll(sock)
{:error, :closed} -> :ok
end
end
end
Test.server
一旦我使用 telnet 连接到服务器,它就会断开连接。知道发生了什么吗?
【问题讨论】:
-
当使用
:gen_tcp.listen打开侦听套接字的进程死亡时,该套接字以及通过列表套接字打开的所有套接字都死亡。
标签: tcp erlang-otp elixir gen-tcp