A Netcat HTTP Server
Netcat is a versatile tool - I learned about it way too late in my career. It can be used as a TCP-server or client. As HTTP is based on TCP, Netcat can even be used to have some fun with HTTP:
This is how to tell nc
to listen to new connections on port 8080
:
$ nc -l 8080
Pointing your Browser or another HTTP client like curl on localhost:8080
:
$ curl localhost:8080/index.html
Netcat will show you the incoming HTTP request immediately:
$ nc -l 8080
GET /index.html HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.64.1
Accept: */*
Lets create an actual file index.html
and serve it via Netcat:
# Create the file
$ cat << EOF > index.html
<!doctype html>
<html>
<body>
<h1>Hello from Netcat!</h1>
</body>
</html>
EOF
# Serve index.html
$ while true; do
cat index.html | nc -l 8080
done
Directing the Browser to localhost:8080
:
We can even use nc
to perform the HTTP request:
$ echo "GET / HTTP/1.0\r\nHost: localhost\r\n\r\n" | nc localhost 8080
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!
<!doctype html>
<html>
<body>
<h1>Hello from Netcat!</h1>
</body>
</html>