Current section
Files
Jump to
Current section
Files
lib/nasty.ex
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