2015-04-20 10 views
11

Ich habe versucht, Socat verwenden, um auf jede Verbindung zu einem Socket zu reagieren es mit einer gefälschten HTTP-Antwort zu hören ist. Ich kann es nicht funktionieren. Es könnte sein, weil ich die cygwin-Version von Socat verwende? Ich weiß es nicht.Socat gefälschte HTTP-Server - verwenden Sie eine Datei als Server-Antwort

Teil des Problems ist, ich möchte das zweite Argument <some_file_response> nicht geschrieben werden. Mit anderen Worten, weil es bidirektional ist, wird es lesen, was in response.txt ist und dann in dieselbe Datei schreiben, und das will ich nicht. Selbst wenn ich open:response.txt,rdonly mache, funktioniert es nicht wiederholt. system: scheint nichts zu tun. exec scheint, wie es funktioniert, zum Beispiel ich exec:'cat response.txt' tun können, aber das wird nie an den Client eine Verbindung zu Port 1234.

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

Ich möchte eine Datei an den Client lesen geschickt, der die Verbindung angeschlossen ist schließen und dann und mache das immer und immer wieder (deshalb habe ich fork benutzt).

Ich setze ein Kopfgeld auf diese Frage. Bitte geben Sie mir nur Lösungen, die mit der Cygwin-Version von der Windows-Eingabeaufforderung arbeiten.

Antwort

0

von Genommen socat examples

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

Dieser Befehl gibt nur zurück, was der Client eingibt. (Wie in den Beispielen angedeutet: "ein sehr primitiver HTTP/1.0-Echo-Server"). –

7

mit Cygwin Geprüft:

socat -vv TCP-LISTEN:1234,crlf,reuseaddr,fork SYSTEM:"echo HTTP/1.0 200; echo Content-Type\: text/plain; echo; cat <some_file_response>" 

Wenn Sie die echos keine vollständige HTTP-Antwort wünschen, lassen out:

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