From 0ba18351bfb33d047f20af88a0ed82a40a1618de Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Wed, 3 Aug 2011 07:24:08 -0400 Subject: [PATCH] Fix explanation of netcat server's host and port arguments. --- posts/Simple_servers.mdwn | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/posts/Simple_servers.mdwn b/posts/Simple_servers.mdwn index 598e498..97b03b8 100644 --- a/posts/Simple_servers.mdwn +++ b/posts/Simple_servers.mdwn @@ -3,19 +3,31 @@ wanted to set up a simple socket-connection test. Here are my notes: Start a plain-text socket echoing incomming text using [netcat][]: - a$ nc -l -p 8080 a.example.net + a$ nc -l -p 8080 -The `-l` (listen) switches netcat into server mode. +The `-l` (listen) switches netcat into server mode. I was a bit +confused by the `` and `` arguments to `nc -l`. It turns +out that they do not specify which address netcat binds to; they limit +the *connecting* host. Something like + + a$ nc -l -p 8080 b.example.net 12345 + +will only accept connections originating from port `12345` on +`b.example.net`. Echo text to that port b$ echo 'hi there' | nc -q 1 a.example.net 8080 +To connect from a specific port, use the `-p` option. + + b$ echo 'hi there' | nc -q 1 -p 12345 a.example.net 8080 + The `-q 1` tells netcat to quit after an EOF is detected. When the client quits, the connection breaks, and the server goes down on its own. If you want netcat to stay up you'll have to restart it: - $ while nc -l -p 8080 a.example.net; do :; done + $ while nc -l -p 8080; do :; done The `:` is Bash's noop. @@ -40,7 +52,7 @@ seems good. Also note that with the `crypt` USE flag, Gentoo will install netcat with an [AES][] patch by [Mixter][], which allows - $ nc -k -l -p + $ nc -k -l -p $ nc -k AES is a symmetric-key encryption standard, so you don't have to go -- 2.26.2