Ich versuche, einen Web-Server mit nur Windows-Batch-Scripting einzurichten.Wie reagiere ich bedingungsabhängig basierend auf der Anfrage bei der Verwendung von Netcat
Ich habe bereits mit dem folgenden Skript kommen:
@echo off
@setlocal enabledelayedexpansion
for /l %%a in (1,0,2) do (
type tempfile.txt | nc -w 1 -l -p 80 | findstr mystring
if !ERRORLEVEL! == 0 (
echo found > tempfile.txt
) else (
echo not-found > tempfile.txt
)
)
Doch die Antwort ist immer eine Anforderung zurück, ich meine, wenn ich so etwas wie dies in den Browser eingeben:
REQUEST: localhost/mystring
ich werde die folgende Antwort erhalten:
RESPONSE: not-found
in Nur der nächsten Anforderung werde ich die korr erhalten ect Antwort für die oben dargestellte Anfrage.
Dies geschieht, weil Netcat eine Anfrage erhält, antwortet es mit dem aktuellen Inhalt der Datei tempfile.txt, die aufgrund der Anfrage noch nicht aktualisiert wurde.
Gibt es eine Möglichkeit, die Antwort zu blockieren, bis die tempfile.txt aktualisiert wird oder eine andere Methode, die das erwartete Ergebnis erzielt?
Sie überschreiben den Inhalt von 'tempfile .txt' entweder mit der Zeichenfolge "gefunden" oder "nicht gefunden"; Ihr Code sollte überhaupt nicht funktionieren. – SomethingDark
@SomethingDark Ich glaube, das war beabsichtigt. Diese sind nicht als Protokolle gedacht. Sie sollen HTTP-Inhalt enthalten. Was OP fragt, ist, wie man die 'nc'-TCP-Ausgabe basierend auf dem Inhalt des Anfrage-Headers des Browsers bedingt. – rojo
@rojo - Er überschreibt eine Datei, die er an netcat anbindet. Netcat sollte links und rechts Erbrechen Fehler geben. – SomethingDark