defmodule TcpHandler do def start(port) do # 監聽端口 {:ok, listen_socket} = :gen_tcp.listen(port, [ :binary, packet: :line, reuseaddr: true, active: false, backlog: 100 ]) accept_loop(listen_socket) end defp accept_loop(listen_socket) do case :gen_tcp.accept(listen_socket) do {:ok, socket} -> spawn(__MODULE__, :handle_client, [socket]) accept_loop(listen_socket) {:error, reason} -> IO.puts("接受連接失敗: #{reason}") end end def handle_client(socket) do # 接收數據 case :gen_tcp.recv(socket, 0) do {:ok, data} -> IO.puts("收到: #{data}") :gen_tcp.send(socket, "Echo: #{data}") # 繼續接收 handle_client(socket) {:error, :closed} -> IO.puts("客戶端斷開連接") {:error, reason} -> IO.puts("接收數據失敗: #{reason}") end end end