gpt4 book ai didi

TCP 服务器没有响应

转载 作者:可可西里 更新时间:2023-11-01 02:33:47 25 4
gpt4 key购买 nike

我有以下使用 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 连接到服务器时,它立即断开连接。知道发生了什么事吗?

最佳答案

我假设这是因为 server() 在调用 spawn() 之后返回并且您的应用程序正常退出。我会这样写:

defmodule Test do
def server() do
{:ok, listen_sock} = :gen_tcp.listen(43594, [{:active, true}, :binary])
{:ok, accept_sock} = :gen_tcp.accept(listen_sock)
poll(accept_sock)
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

我没有测试过上面的代码,但那应该可以解决你的问题。

关于TCP 服务器没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com