Talking to TCP server from shell

Magnus Leone magnus.falk@REDACTED
Sat Nov 13 15:02:56 CET 2021


Heh, I figured out why it didn't work. It was because the server was
running in a PowerShell on Windows, whereas the client side was running in
a WSL2 Linux shell on the same host. If I start both of them in either WSL2
or in PowerShell, then it works fine. Thanks for your help.

Cheers,
Magnus

On Fri, Nov 12, 2021 at 9:48 AM Christophe De Troyer <christophe@REDACTED>
wrote:

> I have a pastebin clone that accepts content over a socket (
> https://github.com/m1dnight/exbin/blob/main/lib/exbin/socket.ex). The way
> you do it there is `echo "my content" | nc example.com 9999`.
>
> I do recall that getting it to work was a bit of fiddling with the socket
> options..
>
> Magnus Leone wrote on 11/12/2021 2:24 AM:
>
> 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.
>
>
> --
> Sent from Postbox <https://www.postbox-inc.com>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20211113/1d36cd44/attachment.htm>


More information about the erlang-questions mailing list