Обърнете реда на вашите аргументи на socat
, и работи.
socat -v tcp-l:6666,reuseaddr,fork unix:/var/lib/mysql/mysql.sock
Това инструктира socat
до
- Слушайте на TCP порт 6666 (с
SO_REUSEADDR
) - Изчакайте да приемете връзка
- Когато се установи връзка, разклонете се. При детето продължете стъпките по-долу. В родителския елемент отидете на 2.
- Отворете връзка с UNIX домейн към
/var/lib/mysql/mysql.sock
контакт. - Прехвърлете данни между двете крайни точки, след което излезте.
Пишете го обратното
socat -v unix:/var/lib/mysql/mysql.sock tcp-l:6666,reuseaddr,fork
не работи, защото това инструктира socat
до
- Отворете връзка с UNIX домейн към
/var/lib/mysql/mysql.sock
контакт. - Слушайте на TCP порт 6666 (с
SO_REUSEADDR
) - Изчакайте да приемете връзка
- Когато се осъществи връзка, създайте дете работник, за да прехвърлите данни между двата адреса.
- Родителят продължава да приема връзки на втория адрес, но вече не разполага с първия адрес:той беше даден на първото дете. Така че от този момент нататък не може да се направи нищо полезно.