Eigener Inet Chat (ICQ Like)

  • VB6

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Gentleman.

    Eigener Inet Chat (ICQ Like)

    Hey ich hab mir gedacht das ich nen kleinen Internet Chat bastel so ähnlich wie ICQ, das ganze soll natürlich nicht im Ansatz so ein riesen Projekt werden sondern nur für mich und ein paar meiner Freunde. Das ganze soll so laufen, das ich auf meinem PC den Server laufen habe von dem aus ich kicken kann und Nachrichten an alle Leute schrieben kann die Online sind, später möchte ich dan eine Funktion einbauen wie bei ICQ das die Nachrichten die an jemanden geschickt werden der Offline ist gespeichert wreden und gesendet werden sobald dieser wider online kommt (das aber erst später). Dann verteil ich die Clients an meine Freunde das ganze soll aussehen wie sowas wie knuddels oder so halt ein chat in den man schreiben kann wo alle dies sehen können und man jeden User sehen kann der sich jemals eingeloggt hat. Das ganz halt auch mit Passwort und so weiter. Dazu soll eine kleine Privatchat funktion kommen wo der User angeklickt wird sich ein Privatchat öffnet und man mit diesem dann schrieben kann. Hab schon ein paar kleine Erfahrungen mit Winsock gemacht(funktioniert aber soweit ich weiß nicht übers Internet? Lieg ich da falsch?). Also was ich eigentlich von euch brauche ist nur der Ansatz den Rest bastel ich mir dan schon irgendwie alleine Zurecht, ich brauche also nen Ansatz zu dem Server wie ich ihn oben gerne hätte wo halt sagen wir bis zu 20 Leute draufkönnen und dann nen einfachen Client wo man sehen kann wer online ist(z.B. mit farbigen Namen) und Nachrichten in den Allgemeinen Chat welchen alle sehen können schicken kann. Ich möchte keinen fertigen Code von euch(wäre ja auch langweilig) sondern lieber entweder ein nettes Tutorial was mir weiterhelfen könnte oder Codeschnibsel bzw. Ansätze von euch.
    Wäre super wenn mir da jemand weiterhelfen könnte ich bin über jede Hilfe dankbar.

    Greetz Gent
    Jo alles klar hab jetzt bissl was dazu gefunden. Tut mir leid das ich nicht gleich gesucht habe, aber wäre ganz lieb wenn mir jemand sagen könnte ob das so einfach klappt wie ich mir das jetzt vorstelle. Also das dass ganze mit Winsock nicht geht scheint ja anscheinend ein gerücht zu sein, also werd ich das ganze mit Winsock machen, ich hab mir das so gedacht, das weil ich ja eine dynamische IP hab der Server beim Start ne Art Text datei auf einen Webspace lädt in dem meine IP drin ist, der Client lädt sich dann das Dokument bei jedem start herunter und verbindet sich mit der IP. Wäre doch bestimmt so machbar oder ? :D
    Hi!

    1. Winsock ist veraltet (nicht für .net optimiert), darum solltest du es nicht verwenden, nicht weils nicht möglich ist. Es gibt dabei auch keine .net-Exceptions, wodurch die Fehlerbehandlung schwerer / "unmanaged" ist.
    2. Dateien / Dokumente sind schlecht. Du solltest am Server (für gespeicherte Nachrichten) eine DB verwenden, für normale Nachrichten (Zieluser ist Online) die Nachrichten sofort rausschicken (immer nur eine Nachricht im RAM) oder einen Array oder besser eine Linked List im Arbeitsspeicher haben. Bei nur einem Thread (in VB6 ist Multithreading schlecht möglich), ist das mit den Listen eher sinnlos.

    Edit: ui, hab nicht gesehen, dass es sich um VB6 handelt. Bei VB6 ist Winsock die "aktuelle" Variante das zu machen.
    1. gilt nur für .net-Programme!
    Okay das mit den Datenbanken sollte ich auch noch hinkriegen, was ich jedoch noch nie gemacht habe ist, mehrere Clients auf nen Server connecten zu lassen, gibts hier irgend einen Thread oer ein tutorial in der Nähe woraus das ersichtlich ist ?
    Hi!

    Gibt mehrere Möglichkeiten. Wenn das ganze übers Inet laufen soll, ist wohl die 3te am Besten.
    Grundvoraussetzung für alle Varianten: Jeder Logt sich beim Server ein. Wenn er sich längere Zeit nicht meldet (z.B. jede Sekunde ein kleines Paket), weiß der Server, dass der Client abgeschmiert ist. Ansonsten Logt sich jeder User ganz normal aus.
    1. Beim Login muss die IP unbedingt gespeichert werden (sollte sie sowieso um feststellen zu können, dass der User wirklich der User ist). Wenn eine Nachricht für einen User eintrifft, der Online ist, connected der Server zum User und sendet ihm die Nachricht. Problem: Wenn das ganze übers Inet läuft, muss jeder User den Port offen haben.
    2. Jeder User hat eine stehende Verbindung mit dem Server. Dadurch fällt das Port-Offen Problem weg, jedoch ist es ungesund zu viele Verbindungen offen zu haben...
    3. Jedes mal, wenn sich der User meldet (s.o., kann auch öfter sein), schreibt der Server zurück, welche Nachrichten in der Zwischenzeit angekommen sind. In dem Fall brauchst musst du für jeden User noch ein Array mit unabgeholten Nachrichten anlegen. Wenn der User offline geht bevor die Nachrichten zugestellt wurden, musst du das Array dann in die DB dumpen.
    Ah so wird das gemacht, okay hätte man fast selber drauf kommen können (ich nicht :P) super Sache Andy jetzt hab ich erstmal genug Info um vernünftig anzufangen, falls ich noch fragen hab komm ich auf dich zurück ... :D Vielen Dank :thumbsup: