Kleines Chatsystem

  • VB.NET
  • .NET (FX) 4.0

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von EaranMaleasi.

    Kleines Chatsystem

    Hallo Leute,

    ich hab hier im Forum schon ein wenig herumgestöbert und wollte euch fragen, ob ich diesen Beitrag von @kevin89 nutzen kann, oder ob ihr noch andere Quellen hättet?
    Habe mir diesen Beitrag komplett durchgelesen und werde sehr wahrscheinlich die Quelle von @Ruerte dazu nehmen.

    Meine Frage an euch jedoch ist folgende:
    Gibt es weitere Sachen die ich beachten sollte?
    Im Grunde handelt es sich hier um ein Programm welches in einem internen Netzwerk agieren soll.
    Die Nutzernamen würde ich z.B. über Environment.Username ( und/oder Environment.MachineName, da der Computername in dem Netzwerk ja nur einmal vorkommen soll/kann) rausziehen.

    Server

    Intel Xeon Prozessor (2 x2.6 Ghz) und insgesamt 8 GB RAM.
    Durchschnittliche Auslastung bei 3,2 GB.


    Für eure Kommentare und Hinweise bin ich wie immer dankbar.
    Das wäre das erste mal, dass ich zwischen Geräten (Server) Daten austauschen würde (wenn es auch nur Strings sind)-abgesehen von SQL. Aus diesem Grund meine kleine Frage hierzu.

    Grüße,
    Drahuverar

    *Topic verschoben*
    Option Strict On!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Hej @Drahuverar.

    Wenn du magst, melde dich mal per PN und erklär' mir das nochmal genauer.
    Dann kann ich dir gerne ein paar Tipps geben und evtl. das ein oder andere Problem lösen, schließlich habe ich schon mehrere Chatanwendungen programmiert.

    Grüße
    Väinämö
    meine Wenigkeit hält nur wenig vom MultiServer. Ist glaub Strict Off geproggt, und wenns wirklich dabei geht, ein Befehls-Protokoll umzusetzen, gibt der eiglich garnix her.
    Einen Chat wird man ohne Befehls-Protokoll aber wohl kaum stemmen können.
    Ein anderes Grundproblem ist, dass er für jede Connection einen eigenen Thread im Dauer-Loop unterhält.
    Sowas macht man eiglich garnet, sondern man sollte den Threadpool nutzen, auf die eine oder andere Weise. :thumbdown:

    Ist natürlich nur der Neid um die Aufmerksamkeit, der da aus mir spricht, weil meine eigenen Werke ein so ärmliches Mauerblümchen-Dasein fristen, zB: TcpKommunikation + Networkstream
    Dabei ist das ich denke eine wirklich brauchbare Basis.
    Von Microsoft wird übrigens noch ein oder zwei ganz abstrakte Lösungen präferiert: WCF oder (wird als veraltet bezeichnet:) Remoting.
    Einen Winz-WCF-Chat habich auch in den INet-Tuts, musste mal suchen.

    Von WCF habich allerdings gehört, ist zwar alles ganz doll, was man alles konfigurieren kann, und flutscht wie sonstwas, aber inne Praxis basteln Profis denn doch was eigenes, weil man hat immer den einen oder anderen Spezial-Wunsch, den man mit WCF dann doch nicht optimal gebacken kriegt.

    ErfinderDesRades schrieb:

    Ist glaub Strict Off geproggt

    Es steht zwar Option Strict Off drüber, es funktioniert aber wunderbar mit Option Strict On.

    ErfinderDesRades schrieb:

    und wenns wirklich dabei geht, ein Befehls-Protokoll umzusetzen, gibt der eiglich garnix her.
    Einen Chat wird man ohne Befehls-Protokoll aber wohl kaum stemmen können.

    Stimmt, ohne Befallsprotokoll läuft eigentlich kein Chat. Es sei denn man hat einen reinen Schreib-Chat ohne Funktionen. Allerdings lässt sich auch in dem Tutorial für den Multiserver sehr wohl ein Befehlsprotokoll implementieren.

    ErfinderDesRades schrieb:

    Ein anderes Grundproblem ist, dass er für jede Connection einen eigenen Thread im Dauer-Loop unterhält.

    Das stimmt, verbraucht jetzt aber auch nicht so viele Ressourcen.

    Grüße
    Väinämö
    na, das mit dem Protokoll ist echt eine Baustelle, wo man ordendlich dran hirnen muss, und ich glaub der MultiServer-Thread hat auch deshalb so viele Posts, weil so keiner damit klarkommt.

    (Performance:)
    Klar, wenn 5 Leute chatten ist das egal, aber was man "Server" nennen will, sollte schon 100 Clienten bedienen können.
    @Drahuverar
    Wir wissen leider nicht genau was du vor hast. Willst du nur maximal 100-1000Leute in deinem Chat haben reicht der Multiserver eigentlich komplett aus. Willst du aber mehrere Leute (so ca 10.000+ in deinem Chat haben solltest du die Idee von @ErfinderDesRades mal genauer anschauen.

    Ein anderes Grundproblem ist, dass er für jede Connection einen eigenen Thread im Dauer-Loop unterhält.
    Sowas macht man eiglich garnet, sondern man sollte den Threadpool nutzen, auf die eine oder andere Weise.

    Das sehe ich zb als grossen vorteil an. Wenn sich jemand einloggt dann kannst du diesen Client einen festen thread zuweissen und kannst diesen client auch so seine richtigen rechte geben die nur der client hat. Ob das bei einem Chatsystem Sinn macht (ich denke da an die kick funktionen für moderator und Admins?) musst du selber wissen.
    Dieses System verbraucht dadurch leider mehr Hardware und es "KANN" passieren das der chat (bzw der server) langsamer reagiert und die Nachrichten später ankommen. Aber ob das bei einem Chatsystem so wichtig ist?
    Ich finde den Multiserver "einfacher" und ich habe damit auch schon einige (Multi-)Server mit aufgebaut.

    über deine Hardware solltest du dir eigentlich garkeine gedanken machen. Bei beiden Chatsystemen sollte es da so schnell keine Probleme geben.

    MVN050 schrieb:

    es "KANN" passieren das der chat (bzw der server) langsamer reagiert und die Nachrichten später ankommen

    Das ist mir selbst bei ~80 Leuten in einem Computerraum mit nem gameligen Schulcomputer als Multiserver noch nie passiert. Ich konnte sogar an dem Serverrechner noch wunderbar arbeiten.

    ErfinderDesRades schrieb:

    na, das mit dem Protokoll ist echt eine Baustelle, wo man ordendlich dran hirnen muss, und ich glaub der MultiServer-Thread hat auch deshalb so viele Posts, weil so keiner damit klarkommt

    Natürlich muss mann sich für das Protokoll gedanken machen, aber ich finde genau das macht auch den Reiz aus, das ganze zu verwenden.
    Und der MultiServer-Thread hat deshalb so viele Posts, weil die meisten einfach wieder nur Copy Paste gemacht haben, aber nicht bereit waren den Code zu verstehen und selber zu erweitern. Dabei kann man das Grundgerüst ziemlich leicht verstehen und erweitern (was, vermute ich mal, bei deinem Codebeispiel nur wenigen gelingen wird).

    Grüße
    Väinämö

    MVN050 schrieb:

    Wenn sich jemand einloggt dann kannst du diesen Client einen festen thread zuweissen und kannst diesen client auch so seine richtigen rechte geben die nur der client hat.Ob das bei einem Chatsystem Sinn macht (ich denke da an die kick funktionen für moderator und Admins?)
    Was? Rechte an den Thread festnageln? Rechte sollten per Connection bzw. per Session festgelegt werden. Und per Definition sollte ein Thread mehrere solcher Sessions abarbeiten können. Admins bekommen dann halt das Recht andere Sessions zu beenden, und somit die "Kick" Funktion. Das Interessiert den Thread recht wenig. Ebenso wenig interessiert es ihn ob sich da jetzt nen Admin oder ein normaluser oder gar ein Gast drauf aufhält. Er tut was er muss, alles schön geschmeidig halten ;)