(ns gen_tcp "Erlang :gen_tcp module — TCP socket interface. In CljElixir: (gen_tcp/listen port opts), (gen_tcp/accept socket), etc. Core networking module for TCP servers and clients on the BEAM.") (defn listen "Starts listening on `port`. Returns {:ok listen-socket} or {:error reason}. (gen_tcp/listen 4000 [:binary {:active false} {:reuseaddr true}])" [port opts]) (defn accept "Accepts an incoming connection. Blocks until a connection arrives. (gen_tcp/accept listen-socket) ;=> {:ok socket} (gen_tcp/accept listen-socket 5000) ;=> with 5s timeout" ([listen-socket]) ([listen-socket timeout])) (defn connect "Connects to a TCP server. Returns {:ok socket} or {:error reason}. (gen_tcp/connect \"localhost\" 4000 [:binary {:active false}]) (gen_tcp/connect {127 0 0 1} 4000 opts 5000) ;=> with timeout" ([address port opts]) ([address port opts timeout])) (defn send "Sends data over a TCP socket. Returns :ok or {:error reason}. (gen_tcp/send socket \"hello\")" [socket packet]) (defn recv "Receives data from a socket. Blocks until data arrives. (gen_tcp/recv socket 0) ;=> {:ok data} (0 = any amount) (gen_tcp/recv socket 1024 5000) ;=> with timeout" ([socket length]) ([socket length timeout])) (defn close "Closes a TCP socket. (gen_tcp/close socket) ;=> :ok" [socket]) (defn controlling-process "Transfers socket ownership to another process. (gen_tcp/controlling-process socket new-owner-pid) ;=> :ok" [socket pid]) (defn shutdown "Shuts down one or both directions of a socket. (gen_tcp/shutdown socket :write) ;=> :ok (gen_tcp/shutdown socket :read-write)" [socket how])