Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Работа с socat для отправки сообщения и получения ответа

Автор вопроса: arkОтветов: 1

Используя Socat на моем сервере, у меня есть текущая команда:

socat -u tcp-l:7767,fork system:/app/getmsg.sh

Все, что делает getmsgh.sh:

read MESSAGE
echo $MESSAGE

Я пытаюсь выяснить, как клиент может отправить сообщение и получить вывод getmsg.sh

Пробуем на клиенте:

echo "hello" | socat -t 30 tcp:localhost:7767 -

Не работает. На сервере отображается, а на клиенте нет. Кажется, что если вы попытаетесь передать сообщение клиенту, socat хочет немедленно выйти

socat

Ответы

Ответ 1 · рейтинг 5 · mmlr

Проблема заключается в опции -u на стороне сервера. Значение параметра -u со страницы руководства socat:

Использует однонаправленный режим. Первый адрес используется только для чтения, а второй адрес используется только для записи.

Следовательно, сторона tcp-l: только читается, а сторона system: только записывается вместо двунаправленного соединения (которое используется по умолчанию). Удаление параметра -u заставляет работать пример в вопросе.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы