Inverti l'ordine dei tuoi argomenti in socat
, e funziona.
socat -v tcp-l:6666,reuseaddr,fork unix:/var/lib/mysql/mysql.sock
Questo indica socat
a
- Ascolta sulla porta TCP 6666 (con
SO_REUSEADDR
) - Aspetta di accettare una connessione
- Quando viene stabilita una connessione, fork. Nel bambino, continua i passaggi seguenti. Nel genitore, vai a 2.
- Apri una connessione di dominio UNIX a
/var/lib/mysql/mysql.sock
presa. - Trasferisci i dati tra i due endpoint, quindi esci.
Scrivendolo al contrario
socat -v unix:/var/lib/mysql/mysql.sock tcp-l:6666,reuseaddr,fork
non funziona, perché questo indica socat
a
- Apri una connessione di dominio UNIX a
/var/lib/mysql/mysql.sock
presa. - Ascolta sulla porta TCP 6666 (con
SO_REUSEADDR
) - Aspetta di accettare una connessione
- Quando viene stabilita una connessione, genera un figlio lavoratore per trasferire i dati tra i due indirizzi.
- Il genitore continua ad accettare connessioni sul secondo indirizzo, ma non ha più a disposizione il primo indirizzo:era stato dato al primo figlio. Quindi nulla di utile può essere fatto da questo momento in poi.