Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- defmodule Server do
- @response "HTTP/1.1 200 Ok\r\nContent-Length: 11\r\n\r\nHello World"
- def run(port \\ 12345) do
- opts = [:binary, packet: :raw, active: false, reuseaddr: true]
- {:ok, server_socket} = :gen_tcp.listen(port, opts)
- IO.puts "Listening on :#{port}"
- accept_loop(server_socket)
- end
- defp accept_loop(server) do
- {:ok, client} = :gen_tcp.accept(server)
- :inet.setopts(client, [nodelay: true])
- spawn(__MODULE__, :client, [client])
- accept_loop(server)
- end
- def client(socket), do:
- with(
- {:ok, data} <- :gen_tcp.recv(socket, 0),
- requests <- data |> String.split("\r\n\r\n") |> length(),
- :ok <- :gen_tcp.send(socket, List.duplicate(@response, requests)),
- do: client(socket)
- )
- end
- Server.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement