defmodule Nasty do require Logger def start() do {:ok, lsock} = listen() server_accept_loop(%{lsock: lsock}) end def listen() do {:ok, lsock} = :socket.open(:inet, :stream, :tcp) :ok = :socket.bind(lsock, %{family: :inet, port: 4090, addr: {127, 0, 0, 1}}) :ok = :socket.listen(lsock) {:ok, lsock} end def server_accept_loop(%{lsock: lsock} = state) do case :socket.accept(lsock, 1000) do {:ok, sock} -> #Logger.info("New connection accepted!") #:ok = :socket.setopt(sock, :socket, :sndbuf, 10) #spawn(fn -> do_recv(sock) end) server_accept_loop(state) _ -> server_accept_loop(state) end end def do_recv(sock) do Process.sleep(80_000) case recv_and_respond(sock) do :ok -> do_recv(sock) _ -> Logger.error("Problem with recv and respond") end end def recv_and_respond(sock) do case :socket.recv(sock) do {:ok, _msg} -> Logger.info("Message received, now responding!") :socket.shutdown(sock, :write) #:socket.send(sock, MLLP.Envelope.wrap_message(:binary.copy("X", 40))) _ -> :booo end end end