Chatserver unter linux
lima-city → Forum → Programmiersprachen → C/C++ und D
benutzen
bereich
erfahrung
http
login
nachricht
nehmen
netzwerk
nutzen
nutzer
programmiersprache
programmierung
raten
rutsch
schwachsinn
server
software
sprache
unerfahrene programmierer
url
-
Hi,
Ich mag eine chat-server auf basis von sockets in c++ programmieren. Er soll auch viele benutzer aushalten. Wenn ih die eingehenden verbindungen in einem geforktem prozess bearbeite, kann ih dann bei empfangen einer nachricht den andrenn prozessen mitteilen, dass sie eine senden sollen ? Ist da c++ übeehaupt geignet? Kann cih da eine verschlüsslung einbaun?
(Ps der server soll unter linux laufen)
Danke im vorraus
ventos -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mein Tipp: Schau dir NodeJS für sowas an
Mit C++ ist das möglich, joa, aber mit NodeJS ist das einfacher, entsprechend sparsam und bringt Spaß^^
Dazu nimmste http://socket.io, und die Chatapp ist grundlegend aufn Server 40Zeilen, Klient 40Zeilen, und das Chatten geht schon^^ Dazu kannst du erstmal HTTPS nehmen. Notfalls die Crypt Lib, crypto.js, damit kannste auch was bauen.
Ist nur ein Hinweis. Notfalls kannst du vllt zur Vereinfachung Qt für C++ im Hintergrund nehmen. Das würde den C++ Code vielleicht einfacher machen.
Liebe Grüße -
Natürlich get node mit socket.io... Aber hält der auch wirklich viele user aus, und k.a. Ob das mit login fut geht. Der client soll niht umbedingt browserbasiert sein...
-
ventos schrieb:
Also node wird dir nichts in den Weg legen, was einen Login unmöglich macht.
… und k.a. Ob das mit login fut geht.
ventos schrieb:
Nur weil der Server in Sprache X geschrieben ist heißt das noch lange nicht, dass der Client Sprache Y nutzen muss.
Der client soll niht umbedingt browserbasiert sein...
Auch wenn der Server in JavaScript geschrieben ist und node.js nutzt, kannst du problemlos den Client in C++ schreiben… -
Und, dazu möcht ich sagen, NodeJS ist auch für viele Nutzer ok...
Ein Linux Server kappt normalerweise ab 10k Sockets, sodass nicht mehr gehen. Dies kann man umgehen, ich weiß leider nicht wie. Mit NodeJS kriegste gute 1kk Verbindung hin, mit Benutzung, siehe diesen Test: http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/
Und bei Client<->Server nutzt du ein PROTOKOLL, nicht eine Sprache. Es ist ja auch egal ob du einen Browser mit C++, C# oder QML schreibst^^ HTTP selbst ist das Protokoll, nd das kannste ich glaub sogar in BrainFuck machen.
Du kannst mit NodeJS ALLES umsetzen, was du als Server planst. Mir ist eigentlich nichts bekannt, was nicht geht. Es kann mehr oder weniger aufwendig sein, aber es geht.
Alternativ wie gesagt, mit Qt kannste sowas auch super bauen. Oder mit Java. Ich empfinde es aber am leichtesten mit NodeJS.
Liebe Grüße -
Schon klar, ich dachte mir, ich krieg die events nich hin, die socket.io schickt. vlt nehm ich ja was eigenes, net socket.io. Wie mach ich das mit mehreren chaträumen effizient?
Also, cih mag, jeder user loggt sich ein, kriegt nen public-key und schickt nen public-key für die übertragung. Dann kommt sein objekt der klasse user zu irgenwas (array oder so) und je nach chatroom wird ihm was geschickt. es giebt keine fest existierenden chatrooms, alles läuft dynamisch, jeder nutzer sucht sich die gelistenden rooms aus und schickt die nachrichten an bestimmte, oder andre user. Wie krieg ich das senden einer nachricht an die betroffenen nutzer effizient hin?
Edit:
es soll auch feste chatrooms mit evtl passwörtern geben. (wie bei irc die festen), gespeichert in ner MySQL-datenbank(da weiss ich, wie der acces geht)
Edit:
die lösung im link is fast das, was ich brauche, aber man kann net für jeden nutzer alles mögliche festlegen
Danke im Vorraus
ventos
Beitrag zuletzt geändert: 28.10.2013 15:00:45 von ventos -
quaelgeist schrieb:
Du willst eigentlich ein verteiltes System? In Für C++ kannst du Corba nutzen, für C RPC und für Java JavaRMI. Ich würde eher dazu raten als auf node.js zu setzen, vorallem da du server und Clientprogramme in einem Rutsch schreibst.
Das ist doch Schwachsinn, an Server und Client werden komplett unterschiedliche Anforderungen gestellt, also kann es auch durchaus sinnvoll sein, verschiedene Sprachen zu verwenden.
node.js ist durch den asynchronen Ansatz gerade für Server interessant, da man dadurch gerade im Netzwerk-Bereich relativ einfach sehr performante Software schreiben kann, d.h. in dem Fall einen Server, der viele Clients handeln kann. Mit C++ ist das natürlich auch möglich, es grenzt allerdings gerade für eher unerfahrene Programmierer an eine unlösbare Aufgabe, da mehr Zeit in die Programmierung einer Verwaltung der Prozesse bzw. Threads und Sockets gesteckt werden muss.
Bei der Client-Software kommt es nicht unbedingt auf riesige Performance an, hier sind dann andere Dinge wichtiger, die eine andere Sprache dann vielleicht eher bietet.
Es wäre vielleicht sinnvoll zu wissen, wie viel Erfahrung der Threadersteller in welchen Programmiersprachen hat. Einem C++-Programmierer mit 10 Jahre Erfahrung, der von node.js noch nie etwas gehört hat, würde ich z.B. trotz der oben genannten Vorteile nicht raten letzteres zu benutzen.
LG cookies -
cookies schrieb:
Das ist doch Schwachsinn, an Server und Client werden komplett unterschiedliche Anforderungen gestellt, also kann es auch durchaus sinnvoll sein, verschiedene Sprachen zu verwenden.
node.js ist durch den asynchronen Ansatz gerade für Server interessant, da man dadurch gerade im Netzwerk-Bereich relativ einfach sehr performante Software schreiben kann, d.h. in dem Fall einen Server, der viele Clients handeln kann. Mit C++ ist das natürlich auch möglich, es grenzt allerdings gerade für eher unerfahrene Programmierer an eine unlösbare Aufgabe, da mehr Zeit in die Programmierung einer Verwaltung der Prozesse bzw. Threads und Sockets gesteckt werden muss.
Bei der Client-Software kommt es nicht unbedingt auf riesige Performance an, hier sind dann andere Dinge wichtiger, die eine andere Sprache dann vielleicht eher bietet.
Es wäre vielleicht sinnvoll zu wissen, wie viel Erfahrung der Threadersteller in welchen Programmiersprachen hat. Einem C++-Programmierer mit 10 Jahre Erfahrung, der von node.js noch nie etwas gehört hat, würde ich z.B. trotz der oben genannten Vorteile nicht raten letzteres zu benutzen.
LG cookies
Nun, ich arbeite nicht mit node.js, aber ich programmiere am laufenden Band chatserver und Programme, sowie Medienverwaltungen, Nachrichtenverwaltungen usw, behaupte bitte nicht ich würde Schwachsinn produzieren.
Ich verstehe nicht was du damit meinst "an server und Client werden unterschiedliche Anforderungen gestellt". Für mich sieht es danach aus, als wüsstest du selbst nicht was du meinst.
Wenn du z.B einen Server per javaRMI betreibst solltest du keine Probleme haben etwa einen Corba oder Java Servlets Client zu betreiben.
-
quaelgeist schrieb:
Ich verstehe nicht was du damit meinst "an server und Client werden unterschiedliche Anforderungen gestellt".
Client und Server müssen verschiedene Aufgaben erfüllen und deshalb gibt es jeweils Prioritäten, auf die man auch bei der Wahl der Programmiersprache achten muss, und Eigenschaften, die nicht so wichtig sind.
Wenn der Server „viele User“ (genauere Angaben sind ja von Threadersteller nicht gegeben worden) bedienen soll und das Ganze auch noch verschlüsselt, sollte man sich, bevor man anfängt den Server zu programmieren, mal ein paar Gedanken drüber machen in welcher Sprache man das halbwegs performant hinbekommt und nicht in erster Linie drüber nachdenken, ob man mit der gleichen Sprache auch den Client umsetzen kann.
Auf dem Client hingegen kommts auf die eine oder andere Sekunde CPU-Zeit auch nicht an, da dort einfach nicht so eine große Masse an Daten verarbeitet werden muss.
Daher finde ich das Argument schwachsinnig, dass man für Client und Server die gleiche Sprache benutzen soll, weil es sich dann „in einem Rutsch“ schreiben lässt. Sicher mag das manchmal Vorteile haben, doch oft ist es eben einfach nicht sinnvoll. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage