Обърнете реда на вашите аргументи на 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) - Изчакайте да приемете връзка
- Когато се осъществи връзка, създайте дете работник, за да прехвърлите данни между двата адреса.
- Родителят продължава да приема връзки на втория адрес, но вече не разполага с първия адрес:той беше даден на първото дете. Така че от този момент нататък не може да се направи нищо полезно.