This commit is contained in:
2026-02-19 10:14:42 +08:00
parent 9d91a77647
commit f1cde528a4
6 changed files with 78 additions and 107 deletions

View File

@@ -1,33 +1,21 @@
defmodule Broker do
use GenServer
def init({protocol, port, to_host, to_port}) do
def start_link({:tcp, port, to_host, to_port}) do
GenServer.start_link(__MODULE__, {:tcp, port, to_host, to_port})
end
@impl true
def init({:tcp, port, to_host, to_port}) do
{:ok, listen_socket} =
:gen_tcp.listen(port, [
:binary,
reuseaddr: true,
active: false,
active: true,
backlog: 100
])
{:ok,
%{
protocol: protocol,
port: port,
to_host: to_host,
to_port: to_port,
listen_socket: listen_socket
}}
end
def 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
TcpWatcher.start_link({to_host, to_port, listen_socket})
{:ok, {:tcp, port, to_host, to_port, listen_socket}}
end
end