#!/usr/bin/env escript main([Hostname, Port])-> Str = loop(io:get_line(standard_io,''), []), Res = gen_tcp:connect(Hostname, list_to_integer(Port), [binary, {packet, 0}]), case Res of {ok, Socket} -> ok = gen_tcp:send(Socket, Str), receive_data(Socket, [], lists:flatten(Str)); {error, Why} -> io:format("error ~p~n", [Why]), exit(eError) end. receive_data(Socket, _Original, _Original) -> gen_tcp:close(Socket); receive_data(Socket, SoFar, Original) -> receive {tcp, Socket, Bin} -> Lines = binary_to_list(Bin), io:format("~s", [Lines]), receive_data(Socket, lists:flatten(SoFar ++ [Lines]), Original); {tcp_closed, Socket} -> ok after 10000 -> gen_tcp:close(Socket) end. loop(eof, SoFar)-> lists:reverse(SoFar); loop(Data, SoFar) -> loop(io:get_line(''), [Data|SoFar]).