Socat fake http server - использовать файл как ответ сервера
Я пытаюсь использовать socat для ответа на каждое подключение к сокету, который он прослушивает, с поддельным HTTP-ответом. Я не могу заставить его работать. Может быть, потому, что я использую cygwin версию socat? Я не знаю.
Частично проблема заключается в том, что я не хочу, чтобы второй аргумент <some_file_response>
не записывался. Другими словами, поскольку он двунаправлен, он будет читать то, что в response.txt, а затем записывать в тот же файл, и я не хочу этого. Даже если я делаю open:response.txt,rdonly
, он не работает многократно. system:
, похоже, ничего не делает. exec
кажется, что он работает, например, я могу сделать exec:'cat response.txt'
, но никогда не отправляется клиенту, подключающемуся к порту 1234.
socat -vv tcp-listen:1234,reuseaddr,fork <some_file_response>
Я хочу, чтобы он читал файл клиенту, который подключался, а затем закрывал соединение, и делал это снова и снова (почему я использовал fork).
Я ставил щедрость на этот вопрос. Пожалуйста, дайте мне решения, которые работают с версией cygwin из командной строки Windows.
Ответы
Ответ 1
Протестировано с cygwin:
socat -vv TCP-LISTEN:1234,crlf,reuseaddr,fork SYSTEM:"echo HTTP/1.0 200; echo Content-Type\: text/plain; echo; cat <some_file_response>"
Если вам не нужен полный HTTP-ответ, оставьте эхо:
socat -vv TCP-LISTEN:1234,crlf,reuseaddr,fork SYSTEM:"cat <some_file_response>"
Ответ 2
Взято из socat examples
socat -vv TCP-LISTEN:8000,crlf,reuseaddr,fork SYSTEM:"echo HTTP/1.0 200; echo Content-Type\: text/plain; echo; cat"