A
Nun gut, ich bin zwarn Anfänger bei der Programmierung, habe mir aber wegen eines Chats schonmal ähnliche Skripte und Zeichnungen ausgearbeitet.
Mit welcher Sprache->
Ich würds eher mit C++ machen, bietet meiner Meinung nach mehr Optimierungsmöglichkeiten, und da es in Größe von MSN sein soll wird es mit Sicherheit zeitkritisch zugehen, ergo wäre es schlecht wenn man eine Sprache benutzt die einen Zwischencode verwendet, da dieser ja zur Laufzeit nochmal übersetzt werden muss. Zumal es hier nicht wichtig ist, ob der Server auf verschiedenen Systemen lauffähig ist.
Vielleicht für die Clients, aber der Server sollte dann doch so Hardwarenah wie möglich sein.
Ob TCP oder UDP->
Hier stellt sich wohl eher die Frage was du denn so alles machen möchtest. Wenns nur Chat ist, dann doch eher TCP, da der Chat nicht zeitkritisch ist, und die Bestätigung der Pakete verhindert, das eine Nachricht verloren geht. Auch die Client Server Kommunikation über TCP.
Wenn zwei Clients miteinander verbunden sind, wäre es eigentlich besser, wenn du hier den Server ausm Spiel lässt, nur um die Verbindungsdaten zu bekommen, sollen sich die Clients beim Server melden (und natürlich für die Userdaten). Danach sollen sich die Client untereinander verbinden, und ab hier würde ich den Server weglassen.
Wenn der User A nicht erreichbar ist, und eine Nachricht hinterlassen werden soll, kann sich der Client B beim Server melden, und dort eine Nachricht hinterlegen. Wenn der User A sich wieder anmeldet, schaut der Client halt einfach in das Postfach, OB neue Nachrichten da sind, und wenn, dann holt er sie eben ab. Dann muss der Server noch daran denken, die Daten zu löschen, oder der Client stößt es an. Wenn man es Clientseitig belässt, hat man die Gewissheit, dass die Nachrichten vollständig vom Client empfangen wurden.
Wie die Daten serialisieren->
Weiß nicht wo da das Problem ist, wenn du ganze Nutzerprofile handeln willst bleibt eh nur eins. Datenbank. Damit sparste wohl den meisten Platz. In einer Textdatei käm sowas ja schon fast lächerlich .
Für eine Datenbank musste natürlich entsprechende Erfahrung haben. Man kann (wenn man lustig ist) das Nutzerprofil auf 40 Tabellen aufteilen. Eher sogar mehr. 10-12 waren es schon als ich in der Schule nur Name, Nachname, Adresse und Rufnummer aufteilen sollte. Da wirste dich auf alle Fälle nochmal mit einem guten Datenbank-Buch beschäftigen müssen, bzw. du kennst dich schon so gut aus, dass du das problemlos auf die Reihe bekommst. Ansonsten brauchst halt jemanden der dir das macht, denn eine Datenbank in der Größe ist wirklich nicht ohne. Wenn die aber mal fertig ist, sind die SQL Abfragen dann dein geringstes Problem.
Ob es fertige Umsetzungen für die Größe gibt möchte ich bezweifeln, und wenn, dann sicherlich nicht ohne eine Lizenzgebühr.
Ob Directplay schon das kann was du möchtest, vielleicht. Aber bedenke, wenn es ein Chat ist, möchtest du ja möglichst viele Menschen erreichen, also solltest du weitestgehend Clients einsetzen, die davon unabhängig sind. Denn auf Linux lässt sich DirectX nur herzlich schwer installieren .
Ich weiß dass dir meine Antwort wahrscheinlich wenig bringt. Denn die Antwort ist fast so, als würde man auf Linus Torvalds zugehen, und sagen "Ich hätte gern, das Windows Programme einwandfrei auf Linux laufen, die Treiber am besten auch noch."
Und wenn dir die Antwort wirklich nichts bringt, dann steht wenigstens der Thread wieder weiter oben. Vielleicht stolpert ja mal jemand darüber, der dir dann auch helfen kann .
Gruß
Markus Seidl