34 lines
688 B
Elixir
34 lines
688 B
Elixir
defmodule Broker do
|
|
use GenServer
|
|
|
|
def init({protocol, port, to_host, to_port}) do
|
|
{:ok, listen_socket} =
|
|
:gen_tcp.listen(port, [
|
|
:binary,
|
|
reuseaddr: true,
|
|
active: false,
|
|
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
|
|
end
|
|
end
|