Talking to TCP server from shell

Miles Fidelman mfidelman@REDACTED
Fri Nov 12 18:18:41 CET 2021


Are you sure that you have telnet enabled?  These days, it's pretty 
standard to turn off telnet for security reasons, and only allow login 
via ssh.

You might try using some of telnet's debuging modes, or nc (netcat) to 
see what's going on (or not) during connection establishment.

Miles Fidelman

Magnus Leone wrote:
> Hello,
>
> I'm working on making a very basic talk about networking, and 
> eventually a webserver, but I thought I'd start with the very basic 
> parts; just a TCP echo server. The thing is that the talk is not 
> specifically about Erlang, I'm just using that as I'm most familiar 
> with it (and hey, if I get some people interested, that's great). So I 
> wanted the client side to be just a regular shell.
>
> Here is where my problem comes in - I can't seem to get the server 
> process to accept the incoming connection when it comes from a shell. 
> The code is pretty much straight out of Joe's book and it works fine 
> as long as the other side is also an Erlang process. What I've tried 
> so far:
>
> >telnet localhost 7777
> Trying 127.0.0.1...
> telnet: Unable to connect to remote host: Connection refused
>
> >netcat localhost 7777
> *no output*
>
> Does anyone know how I can use bash to connect to a TCP socket in this 
> scenario?
>
> Cheers,
> Magnus
>
> start(Port) ->
>     {ok, ListenSocket} =
>         gen_tcp:listen(Port, [list, {packet, 0},
>                                     {reuseaddr, true},
>                                     {active, true}]),
>     {ok, Socket} = gen_tcp:accept(ListenSocket),
>     ok = gen_tcp:close(ListenSocket),
>     io:format("Server accepted connection on port ~p~n", [Port]),
>     loop(Socket).
>
> loop(Socket) ->
>     receive
>         {tcp, Socket, StringMsg} ->
>             io:format("Server received message: ~p~n", [StringMsg]),
>             Reply = "Echo " ++ StringMsg,
>             io:format("Server replying: ~p~n", [Reply]),
>             gen_tcp:send(Socket, Reply),
>             loop(Socket);
>         {tcp_closed, Socket} ->
>             io:format("Server socket closed - shutting down...~n")
>     end.


-- 
In theory, there is no difference between theory and practice.
In practice, there is.  .... Yogi Berra

Theory is when you know everything but nothing works.
Practice is when everything works but no one knows why.
In our lab, theory and practice are combined:
nothing works and no one knows why.  ... unknown



More information about the erlang-questions mailing list