Let's see few examples of common options:
socat -V # prints the version, and supported compiled features
socat -h <other_things> # more info with -h -h or stil more verbose with -h -h -h
socat -d <other_things> # more info with -d -d or stil more verbose with -d -d -d
Invoking socat with -u ensures that the first address can only be used for reading and the second address can only be used for writing; so to install a unidirectional communication.
Indeed by default socat installs bi-directional communications.
socat -u <address1> <address2>