mmofacts.com

C++ Windows/Linux

gepostet vor 16 Jahre, 10 Monate von Sh1nto
Hallo,
ich kann zwar C/C++ allerdings hab ich das noch nie im Zusammenhang mit dem Apache gemacht. Ich weiß das man C++ Programme als CGI unter dem Apache aufrufen kann, allerdings weiß ich nicht wie, und hab auch auf die Schnelle beim googlen nichts dazu gefunden. Jemand eine Idee? Oder eine gute Seite?
Nun aber zu meinem eigentlich Problem, ich entwickel meistens unter Windows, aber der Server läuft aber unter Linux. Folglich würde ich gerne gcc als Compiler nehmen, da der sowohl unter windows als auch Linux läuft.
Hat jemand Erfahrung gesammelt mit so einer Test/Liveumgebung? Irgendwelche Fallen in dem Zusammenspiel? Die unterschiedlichen Umgebungen sind notwendig, da ich immer alles auf einem USB Stick mit mir führe, damit ich überall arbeiten kann. Und nicht überall wo ich arbeite gibt es Linux oder Internet.
Dank im Voraus
Sh1nto
gepostet vor 16 Jahre, 10 Monate von Klaus
-> www.galileocomputing.de/openbook/c_von_a_bis_z/c_026_000.htm#Xxx999328
Bei der Cross-Plattform-Programmierung musst du immer darauf achten Win/Linux spezifische Befehle durch Präprozessor-Bedingungen abzufangen. Das wird - falls notwendig - in dem Openbook auch durchgehend gemacht.
Schön ist es nicht, aber das ist C/C++ sowieso nicht. Eine "historisch gewachsene" Sprache eben.
BTW: CGI ist doof, da bei jedem Request ein neuer Prozess deines Programms gestartet wird.
Eine Alternative wäre FastCGI. Du schreibst damit dein Programm praktisch als Daemon, welcher die Requests vom Server weitergereicht bekommt. Diese Technik ist leider schlecht dokumentiert. Vielleicht beschreibe ich (irgendwann) wie ich das gelöst habe.
gepostet vor 16 Jahre, 10 Monate von Todi42
Ich bin recht schnell mit google zu de.selfhtml.org/servercgi/cgi/umgebungsvariablen.htm gekommen. CGI kommuniziert die Paramter der Anfrage über Umgebungsvariablen. Wenn Deine Zielplatform Linux ist, würde ich Dir empfehlen auf Win den gcc unter cygwin zu benutzen. Auf der anderen Seite kann ich mir jetzt nicht richtig vorstellen, was Du da an Platformabhängigen Sachen machen möchtest. Vieles wird mittelweile auch schon von boost abgedeckt (threading, tcp/ip).
gepostet vor 16 Jahre, 10 Monate von COrthbandt
Wenn der Webserver immer Apache ist, macht es evtl mehr Sinn, ein Apache-Modul in C/C++ zu schreiben. Das hätte u.a. den Vorteil, dass Du schon ein halbwegs brauchbares Framework mit Strings, Config usw. hast.
Von CGI würde ich eher die Finger lassen, die Performance ist übel.
FastCGI sollte mit den fertigen Libs (www.fastcgi.com) eigentlich recht einfach umzusetzen sein.
gepostet vor 16 Jahre, 10 Monate von Sh1nto
Ich kämpfe jetzt schon lange mit FastCGI aber ich krieg das Modul unter XamppLite nicht gestartet. Es kommt immer folgender Fehler:
apache: Syntax error on line 142 of F:/xampplite/apache/conf/httpd.conf: Cannot
load F:/xampplite/apache/modules/mod_fastcgi-2.4.2-AP20.dll into server: Das angegebene Modul wurde nicht gefunden.
Ich hab keine Ahnung wieso, das Modul liegt genau an der Stelle, hab es auch mit anderen Namen probiert, bzw. andere Module runtergeladen.
hat jemand eine Idee woran das leigen könnte, oder hat wer ein funktionierendes XamppLite mit mod_fastcgi?
gepostet vor 16 Jahre, 10 Monate von Agmemon
Also nach meinem letzten Kenntnisstand wird das FastCGI für Apache nicht mehr weiterentwickelt. Daher läuft es seit geraumer Zeit auch nicht mehr mit den aktuellen Apache Versionen, ausser man kompiliert das Modul auf Basis von UserPatches selbst. Das letzte mal, dass ich das gemacht habe, war der Server aber nicht sehr stabil.
Und dann zu versuchen das ganze in ein abgespeckten XAMPP zu integrieren, ist vermutlich nicht so die gute Idee. Mein Vorschlag wäre, erstmal auf einen Lighttpd zu gehen, der die FastCGI Unterstützung schon mitbringt.
gepostet vor 16 Jahre, 10 Monate von TheUndeadable
> FastCGI für Apache nicht mehr weiterentwickelt
Krass,
FastCGI wird aus dem Apache rausgeworfen und der IIS 7 erhält ein FastCGI-Interface für nicht threadingfähige Frameworks.
> apache: Syntax error on line 142 of F:/xampplite/apache/conf/httpd.conf: Cannot
load F:/xampplite/apache/modules/mod_fastcgi-2.4.2-AP20.dll into server: Das angegebene Modul wurde nicht gefunden.
Hat der Apache auf diese Datei Rechte?
gepostet vor 16 Jahre, 10 Monate von Sh1nto
Ich habs jetzt nur in der Entwicklungsumgebung unter Windows probiert, und da haben alle, alle Rechte,... mal Light Httpd anschauen,... (ausser noch jemand hat eine Idee)
gepostet vor 16 Jahre, 10 Monate von Agmemon
Ich muss mich kurz korrigieren. Scheinbar tut sich seit drei Monaten wieder was. Davor war rund 3 Jahre Pause, da der Maintainer des Projektes keine Zeit mehr dafür hatte. Seit Ende April gibt es eine Version für Apache 2.2
gepostet vor 16 Jahre, 10 Monate von Nuky
cygwin ist das beste für deine dienste. du kannst mit eclipse sogar gcc als compiler verwenden..
in plattformabhängige sachen kommt man sogar schon bei nem schachspiel schnell
gepostet vor 16 Jahre, 10 Monate von None
Original von Agmemon
Ich muss mich kurz korrigieren. Scheinbar tut sich seit drei Monaten wieder was.

Also mir wurde mal gesagt das Projekt sei eingestellt. Keine Ahnung was genau da jetzt los ist.
Quasi-Standard ist derzeit: fastcgi.coremail.cn/
Übrigens kommt der cherokee nahe an die Benchmarks vom alten Apache ran. Der Oberhead bei Apache ist eben etwas gross geworden mit der Zeit
Wenn ich schaue welche Dinge da noch von NCSA-Zeiten drin stehen...
Was du dir bei der Verwendung von CGI im Allgemeinen im Klaren sein solltest: entweder du bist allein auf dem Server oder du brauchst tiefe Kentnisse im Betriebssystem deines Servers. Durch CGI hast du einen Systemzugriff auf einem recht hochem Level (nur direkte Konsole dürfte das noch übertreffen).
Bei Fehlern trifft dich dann unter Umständen daselbe Schicksal wie viele (Hobby-)Administratoren: www.linux-magazin.de/heft_abo/ausgaben/2004/10/insel_huepfer?category=365
Zugegeben: Confixxx spielte in dem Fall eine zentrale Rolle, aber das Prinzip dürfte deutlich werden.
gepostet vor 16 Jahre, 10 Monate von Agmemon
Original von Samson
Also mir wurde mal gesagt das Projekt sei eingestellt. Keine Ahnung was genau da jetzt los ist.

Das war auch die Info die ich hatte. Aber ein Blick ins Projekt Repository hat gezeigt, dass es da scheinbar zwei Leute gibt, die wieder an dem Thema dran sind.
Aber unabhängig davon, würde ich in dem technischem Context so und so nicht zum Apache greifen. Denn eins ist zu erwarten: ein leichtgewichtiger Webserver, FastCGI, das Spiel in C++ implementiert unter Berücksichtigung der Vorteile von FastCGI und direkte Anbindung an die Datenbank über die jeweilige C/C++ API, und man hat ein Performance-Monster.
Ansonsten kann ich Samson nur in seiner Einschätzung unterstützen. Betriebsystem-Kenntnisse sind dringend notwendig, bei der Kombination. Das läuft nicht so wie mit LAMP Systemen, ala runterladen, starten, Spiel hochladen, fertig.
gepostet vor 16 Jahre, 10 Monate von raufaser
Als Webserver würde sich lighttpd anbieten. Ein FastCGI Modul ist da denke ich sehr gut zu integrieren.
Gruß,
Marc

Auf diese Diskussion antworten