The process hangs. You need data to move. Socat is the tool that makes it happen.
Socat is a command-line utility that creates bidirectional data streams between two endpoints. It is not new, but it remains one of the most flexible networking tools in Unix-like systems. The manpages for Socat are dense but complete, detailing every option, address type, and protocol it supports. Understanding them unlocks power.
At its core, Socat connects an address to another address. Addresses can be TCP sockets, UDP sockets, UNIX domain sockets, files, pipes, PTYs, SSL connections, even raw data streams. The manpages list address types under the ADDRESS section—each with its own syntax and modifiers. With these, you can tunnel TCP over SSL, redirect a local socket to a remote endpoint, or forward serial input to a network service.
Key command structure from the socat manpages:
socat [options] <address1> <address2>
It runs until one side closes. Options like -d and -d -d control verbosity. -v adds hexdumps. Timeout behavior is set with -T. There are signal controls, fork modes, and daemonize flags explained in detail. Experienced users often chain Socat commands for complex routing and debugging setups.