Vänd ordningen på dina argument till socat
, och det fungerar.
socat -v tcp-l:6666,reuseaddr,fork unix:/var/lib/mysql/mysql.sock
Detta instruerar socat
till
- Lyssna på TCP-port 6666 (med
SO_REUSEADDR
) - Vänta med att acceptera en anslutning
- När en anslutning upprättas, gaffel. Fortsätt med stegen nedan i barnet. I föräldern, gå till 2.
- Öppna en UNIX-domänanslutning till
/var/lib/mysql/mysql.sock
uttag. - Överför data mellan de två slutpunkterna och avsluta.
Skriver det tvärtom
socat -v unix:/var/lib/mysql/mysql.sock tcp-l:6666,reuseaddr,fork
fungerar inte, eftersom detta instruerar socat
till
- Öppna en UNIX-domänanslutning till
/var/lib/mysql/mysql.sock
uttag. - Lyssna på TCP-port 6666 (med
SO_REUSEADDR
) - Vänta med att acceptera en anslutning
- När en anslutning skapas, skapa ett arbetarbarn för att överföra data mellan de två adresserna.
- Föräldern fortsätter att acceptera anslutningar på den andra adressen, men har inte längre den första adressen tillgänglig:den gavs till det första barnet. Så inget användbart kan göras från och med nu.