2009-06-13 7 views
1

Ich arbeite derzeit an einem TCP-Socket-Server in C++; und ich versuche herauszufinden, wie ich alle Browserverbindungen zu meinem Server ignorieren kann. Irgendwelche Ideen?Wie bestimmte Socket-Anforderungen ignoriert werden

Danke.

+1

Schließen Sie den Webserver? –

+0

Wow, diese Frage war obskur, danke, dass ich einige Dinge geklärt habe. – none

Antwort

7

Benötigen Sie mehr Details, um ein gutes Feedback zu geben.

Werden Sie Port 80 abhören, aber den gesamten HTTP-Verkehr vermeiden? Oder wird Ihr Protokoll HTTP-basiert sein? Müssen Sie auf 80 hören oder können Sie einen beliebigen Port wählen?

Wenn es Ihr eigenes benutzerdefiniertes Protokoll ist (HTTP oder nicht), können Sie einfach die erste Zeile sehen, die gesendet wird, und wenn es Ihnen nicht gefällt, schließen Sie einfach den Socket.

EDIT:

Da Sie auf einem benutzerdefinierten Port zu lauschen gehen, werden Sie wahrscheinlich nicht jeden Browser Verkehr sowieso bekommen. Da Sie Ihr eigenes Protokoll schreiben werden, brauchen Sie nur einen Handshake, der festlegt, dass Ihr Client Ihr benutzerdefiniertes Protokoll spricht und dann alles andere ignoriert (close()).

Bonuspunkte: Senden Sie je nach Ziel eine HTTP-Fehlermeldung zurück, die dem Benutzer angezeigt werden kann.

+0

Ich höre auf einem benutzerdefinierten Port und möchte den gesamten HTTP-Verkehr an diesem Port vermeiden. – Charles

+0

Warum würden Sie http-Datenverkehr erwarten, wenn es kein http-Port ist? –

0

Betrachten Sie einfach die Unterschiede zwischen gültigen Verbindungsanforderungen und ungültigen (dh beide Anfragetypen zum Überprüfen jeder Anfrage), in Ihrem speziellen Fall sollten Sie die HTTP request header betrachten, um alle solche Anfragen zu ignorieren (vorausgesetzt, dass gültige Anfragen HTTP nicht verwenden).

1

Sie können eine vom Webbrowser initiierte TCP/IP-Sitzung nicht anhalten, um eine Verbindung zu Ihrem TCP-Server herzustellen. Sie können (wie oben beschrieben) die Verbindung schließen, nachdem Sie festgestellt haben, dass der Client versucht, mit Ihnen zu kommunizieren (oder ein anderes unerwünschtes Protokoll auf Anwendungsebene).

Verwandte Themen