Forum: PC-Programmierung Server in c++


von Dennis Z. (Firma: School) (dixidoener)


Lesenswert?

Hallo
Ich wollt mir einen Web Server in c++ Programmieren der mit dem
Internet Explorere Funktioniert also Sprich als Protokoll HTTP
Jetzt meine Frage gibt es für so etwas Tutorials??
Gruss

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Wikipedia --> HTTP

von Dennis Z. (Firma: School) (dixidoener)


Lesenswert?

Thx aber gibts nich vllt ein spezielles für c++??

von Artur Funk (Gast)


Angehängte Dateien:

Lesenswert?

Hier gerne der Server von mir, vielleicht hilft es dir weiter. Ach ja, 
Port beachten, http://localhost:6215

Kanst ja natürlich 80 nehmen.

von Sven P. (Gast)


Lesenswert?

Dennis Zolk wrote:
> Hallo
> Ich wollt mir einen Web Server in c++ Programmieren
Nein, ich verspreche dir, das willst du nicht.

Guck dich mal im Linux-Lager um:
- Apache
- lighttpd
Die gibts beide als Quelltext zum reinschnuppern. Vorsicht, 
Konsolenprogramme, also quasi prinzipbedingt unverschämpt kompliziert 
und unbedienbar für Windows-Benutzer, siehe entsprechende Threads hier.

von Peter (Gast)


Lesenswert?

Vielleicht solltest du erstmal schreiben wie deine Kenntnisse in C++ 
sind. Hast du schon mit Sockets gearbeitet? Bist du sicher bei String 
operrationen? Kennst du die Vor und Nachtile  von Threads Forks.

Willst du alles selber schreiben oder auf fertige Libs zugreifen, da 
sollte es schon ein paar HTTP-Server libs geben.

von Jorge (Gast)


Lesenswert?

MFC:
Du machst einen Socket (Klasse CSocket) auf und stellst ihn auf 
"listen". Wenns einer probiert dann gibts mit "accept" einen neuen 
Socket von dem man mit read und write alles machen kann. Es ist ein 
fertiges Beispiel für Visual C++ in den "samples" mit drin.

Im normalen C läuft es analog auch das gibt ein fertiges Beispiel von 
Mycro.

Unter dot net ist es noch etwas einfacher also genauso ähnlich wie in 
Dschawa.

Schau mal unter www.galileocomputing.com

von P. S. (Gast)


Lesenswert?

Sven Pauli wrote:
> Dennis Zolk wrote:
>> Hallo
>> Ich wollt mir einen Web Server in c++ Programmieren
> Nein, ich verspreche dir, das willst du nicht.

Ein bisschen Socket-Programmierung, ein bisschen HTTP-Protokoll und 
schon laeuft das.

Natuerlich ist es auch keine Aufgabe fuer jemanden, der noch gar kein 
C++ kann.

> Guck dich mal im Linux-Lager um:
> - Apache
> - lighttpd
> Die gibts beide als Quelltext zum reinschnuppern.

Oh ja, das hilft einem Anfaenger wirklich weiter. Apache wuerde ja den 
Clean-Code-Contest gewinnen, wenn es ihn gaebe.

von P. S. (Gast)


Lesenswert?

Dennis Zolk wrote:
> Thx aber gibts nich vllt ein spezielles für c++??

Deine Frage zeigt, dass du noch nicht so weit bist. Wenn du C++ kannst, 
ist es kein Problem anhand des RfCs von HTTP 1.0 das ratz fatz zu 
machen. Also erst C++ lernen, dann mal einen minimalen HTTP-Client 
basteln und der Rest kommt dann von alleine...

von Bartli (Gast)


Lesenswert?

Ihr denkt alle viel zu weit. Die Frage war:

> Jetzt meine Frage gibt es für so etwas Tutorials??

Antwort: vermutlich schon. Siehe http://www.gidf.de

von Dennis Z. (Firma: School) (dixidoener)


Lesenswert?

Also Thx erstmal an alle
@Sven Pauli
Danke für die Tipps aber ich wollts wirklich alleine machen.
Weil mich diese Materie sehr interessiert.
@Bartli
Auch wenn du mich ärgern wollts thx für den Link einfach genial muss ich 
mir merken Aber dabei gesagt ich hab bestimmt schon Gegoogelt sonst würd 
ich net fragen.
@peter
Mit Sockets mach ich öfters mal was.
String operationen bin ich recht fitt.
Thread Forks okay das sagt mir gar nix :-)
Arbeite mit Dev C++ also wird nix mit der MFC.
@Artur Funk
Danke Danke werd ma rein schaun
gruss

von oha (Gast)


Lesenswert?

Was soll C++ an einem Server ? Der Vorteil Klassen instanzieren @ 
ableiten zu koennen ist nicht wirklich der Hammer fuer einen Server. 
Wenn man etwas an Performance haben will verzichtet man eh auf 
dynamisches memory.

von Dennis Z. (Firma: School) (dixidoener)


Lesenswert?

@oha
Ich benutze c++ nicht nur für den Server sondern Überhaupt für alles was 
ich mach.
Sonst kann ich nur en bissl Java Script und html Scripten
Aber keine andere Programmiersprache mehr.

von P. S. (Gast)


Lesenswert?

Dennis Zolk wrote:
> @oha
> Ich benutze c++ nicht nur für den Server sondern Überhaupt für alles was
> ich mach.

Einfach nicht hinhoeren. Du bist in einem Mikrokontroller-Forum, da 
glauben viele Leute, 1000 Zeilen sind ein grosses Programm und der 
einzige Weg zu optimieren sei Assembler.

Und nun ran, einfach mal GET implementieren und den Rest ignorieren.

von Simon K. (simon) Benutzerseite


Lesenswert?

Peter Stegemann wrote:
> Einfach nicht hinhoeren. Du bist in einem Mikrokontroller-Forum, da
> glauben viele Leute, 1000 Zeilen sind ein grosses Programm und der
> einzige Weg zu optimieren sei Assembler.

Ja, und glauben außerdem, dass dynamische Speicherverwaltung den Server 
grottenlahm machen würden.

von Peter (Gast)


Lesenswert?

@oha
> Was soll C++ an einem Server?
also ich sehe da schon Vorteile, jeder Client der gleichzeitig 
verarbeiter wird ist ein Object.

Ohne dynamisches memory wird es recht schwer ein Server zu schreiben 
oder willst du von anfang gleich mal 2GB Speicher in beschlag nehmen, 
wenn doch mal mehrere Anfrage kommen.
Klar wenn man den Kompletten Server in ASM schreibt, und auf Dynamischen 
Speicher verzichtet geht es noch ein wenig schneller - zum schluss ist 
aber die Festplatte/Netzwerkkarte eher der Engpass als ein paar speicher 
Anforderrung.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Dennis Zolk wrote:
> Mit Sockets mach ich öfters mal was.
> String operationen bin ich recht fitt.
Dann schreib ein Programm was einen ServerSocket auf Port 80 öffnet und 
einfach vom InputStream alles auf die Konsole schreibt.

Dann öffnest du deine Browser und gibst als addresse 
http://127.0.0.1/index.htm ein und schaust dir die Ausgabe an...
das wird dan in der art sein:
GET /index.htm HTTP/1.1 (Siehe auch 
http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Funktionsweise)
Das heißt der Client fordert dich auf die datei index.htm zu liefern.

Diese schreibst du dann in den Outputstream deines Sockets, Vorher noch 
die Information das alles ok war:
HTTP/1.1 200 OK
und zwei Zeilenumbrüche (\r\n)

 und schon zeigt der Brwoser diese an

Fertig ist dein erste Webserver...

Den rest kanst du nach und nach dazu stricken im Wiki artikel stehn die 
Wichtigsten Sachen drin...

von Dennis Z. (Firma: School) (dixidoener)


Lesenswert?

Ihr wart mir ne Super Hilfe Leute Danke hab einiges an fortschritten 
gemacht der server kann schon bei einem Aufruf ne standard Seite öffnen 
und bin schon fast mit der GET Routine fertig also thx werd mich nochmal 
melden wenn ich noch fragen hab

von Karl-heinz S. (cletus)


Lesenswert?

Dennis Zolk wrote:
> Ihr wart mir ne Super Hilfe Leute Danke hab einiges an fortschritten
> gemacht der server kann schon bei einem Aufruf ne standard Seite öffnen
> und bin schon fast mit der GET Routine fertig also thx werd mich nochmal
> melden wenn ich noch fragen hab

Übrigens: Neben C++ ist auch Deutsch eine Sprache mit klaren 
Vorschriften für die Interpunktion.

von Pascal O. (raven761)


Lesenswert?

Falls du mehrere Clients bedienen willst, dann arbeite mit select(). 
Google einfach "c++ select() server". da findest du ne menge sachen! und 
nein, ein server der mit c++ und klassen geschrieben ist, läuft 
mindestens genauso gut wie ein mit c geschriebener! ich schreib hier 
grad ein multithreading testprogramm und behandel hiermit über 30 
clients. jeder client ballert den server mit über 100MB/s voll :-)

achso, dynamisch anlegbare server sind übrigens auch kein problem

von Dennis Z. (Firma: School) (dixidoener)


Lesenswert?

Ja kla das mit select hab ich alls schon hab schon nen kleinen Server 
´für ein Game von mir geschrieben und Klassen hab ich eigentlich nur 
eine und zwar für den HTTP Header die ließt die Länge von der Datei und 
so.
Sonst ist das ja eigentlic C aus villeicht die c++ Strings

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.