lecture 06
This commit is contained in:
28 files changed
+825
No files matched your search
@@ -0,0 +1,31 @@
|
||||
defmodule Echo.Client do
|
||||
def connect(host, port \\ 6666) do
|
||||
opts = [active: false, packet: :line]
|
||||
{:ok, socket} = :gen_tcp.connect(host, port, opts)
|
||||
loop(socket)
|
||||
end
|
||||
|
||||
defp loop(socket) do
|
||||
case IO.gets("> ") do
|
||||
:eof ->
|
||||
:gen_tcp.close(socket)
|
||||
line ->
|
||||
:gen_tcp.send(socket, line)
|
||||
case :gen_tcp.recv(socket, 0) do
|
||||
{:ok, data} ->
|
||||
IO.write(data)
|
||||
loop(socket)
|
||||
{:error, _} ->
|
||||
:gen_tcp.close(socket)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
with [host, port | _] <- System.argv(),
|
||||
{port, _} <- Integer.parse(port)
|
||||
do
|
||||
Echo.Client.connect(String.to_atom(host), port)
|
||||
else
|
||||
_ -> Echo.Client.connect(:"127.0.0.1", 6666)
|
||||
end
|
||||
Reference in new issue
Block a user