2015-04-20 12 views
11

Ho cercato di utilizzare socat per rispondere su ogni connessione a un socket che sta ascoltando con una risposta HTTP falsa. Non riesco a farlo funzionare. Potrebbe essere perché sto usando la versione cygwin di socat? Non lo so.socat fake http server - utilizza un file come risposta server

Parte del problema è Voglio che il secondo argomento <some_file_response> non venga scritto. In altre parole, poiché è bidirezionale, leggerà ciò che è in response.txt e poi scriverà su quello stesso file, e non lo voglio. Anche se lo faccio, open:response.txt,rdonly non funziona più. system: non sembra fare nulla. exec sembra come funziona, per esempio che posso fare exec:'cat response.txt' ma che non viene mai inviato al client che si connette alla porta 1234.

socat -vv tcp-listen:1234,reuseaddr,fork <some_file_response> 

voglio che leggere un file al client che è collegato e quindi chiudere la connessione e fallo più e più volte (è per questo che ho usato la forchetta).

Sto mettendo una taglia su questa domanda. Per favore, dammi solo soluzioni che funzionino con la versione di Cygwin dal prompt dei comandi di Windows.

risposta

0

Tratto da socat examples

socat -vv TCP-LISTEN:8000,crlf,reuseaddr,fork SYSTEM:"echo HTTP/1.0 200; echo Content-Type\: text/plain; echo; cat" 
+0

Questo comando fa solo eco a ciò che il client scrive. (Come suggerito negli esempi: "un server echo HTTP/1.0 molto primitivo"). –

7

testati con 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>" 

Se non si vuole una risposta HTTP completa, lasciare fuori gli echi:

socat -vv TCP-LISTEN:1234,crlf,reuseaddr,fork SYSTEM:"cat <some_file_response>"