IP mit einem Username überdecken!

  • VB.NET

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

    Auf die schnelle würde ich sagen, Datenbank. Wobei es wird sicher einfach funktionieren.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Die IP-Adresse ist bei den meisten Usern eine sehr variable Angelegenheit.
    Die kann sogar innerhalb einer Chat-Session wechseln.
    Damit in solchen Fällen ein Reconnect ohne Neuanmeldung erfolgreich sein kann, verwenden Chat-Server Session-IDs, die sie mit dem Client austauschen.

    Die meisten Chat-Plattformen benutzen zur Identifikation einen Username, den man am Anfang der Session eingibt und den man sinnvollerweise auch noch per Passwort legitimiert.
    Die Übersetzung von Username zur momentanen IP-Adresse kann der Chat-Server vornehmen, aber wen (außer einen Statistiker) interessiert die IP-Adresse?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    enIking1998 schrieb:

    Nun ja ich habe eine Lösung gefunden:D.

    Trzdem Danke..

    Mfg.eniking1998

    1. Es wäre ganz nett, wenn du uns kurz deine Lösung schilderst. Wenn jemand über google das selbe Problem hat und auf diesen Thread stößt, hilft er ihm nicht weiter und er muss den selben Thread erneut stellen ;)

    2. Wenn du nur von einem kleinen Chat-Tool redest, dann könntest du den usernamen auch einfach vom client mit übergeben lassen und dann anstellt der IP anzeigen :)

    LG spYro
    Für alle die ein ähnliches Problem haben, das ganze müsste eine leicht abgewandelte Versin von DNS sein (nur halt Benutzernamen statt Computer-/Domainnamen)


    Zur Theorie in Lokalen Netzen

    Server-Client-Infrastruktur:

    Jedes mal wenn sich ein Benutzer am Server anmeldet, wird dessen Benutzername und seine IP-Adresse in eine Umsetztabelle (z.B.: Dictionary(of String, <Typ mit dem die IP gespeichert wird>)) geschrieben.
    Wenn nun ein Benutzer eine Nachricht an z.B.: "Franz" schickt, sendet er dem Sever den Namen und die Nachricht. Dieser sieht in seiner Umsetztabelle nach und sendet an die richtige IP.
    Nun muss man nur beim Ändern des Namens prüfen ob dieser verfügbar ist, wenn ja, wird der alte Name mit dem neuen ersetzt.

    Peer-to-Peer:
    Wenn der Client gestartet wird, sendet dieser einen Broadcast, damit alle anderen Clients wissen, das jemand neues da ist und antworten ihm direkt mit einer Bestätigung. Anhand dieser Nachrichten trägt jeder Client die empfangenen Daten in eine eigene Umsetztabelle ein (Name/IP). Ist der Name bereits vergeben, so verwerfen die Clients die Anfrage und der Client der den Namen bereits vorher verwendet hat, sendet dem Neuankömmling eine Nachricht, dass der Name bereits vergeben ist. Danach muss der Neuankömmling seinen Namen ändern (Wer zuerst kommt...)
    Bei jeder Namensänderung, sender der Client dessen Name geändert wird, eine Nachricht an alle anderen Clients mit dem neuen Namen. Diese bestätigen das dieser nicht verwendet wird oder senden das der Name bereits vergeben ist.

    Im Internet wird das ganze etwas komplizierte, aber nicht unmöglich. Da die meisten keine lokale Portweiterleitung verwenden bzw. verwenden wollen, ist es wahrscheinlich das hier eine Server-Client-Infrastruktur verwendet wird.

    Das Prinzip ist im Großen und Ganzen das selbe wie im lokalen Netzwerk, nur das jeder Client regelmäßig nachsieht ob neue Nachrichten da sind. Bei jedem mal nachsehen, sowie bei einer Namensänderung wird an den Server ein Request gesendet welches die aktuelle IP sowie den Namen enthält. Damit kann man sicherstellen, dass immer die aktuelle IP eingetragen ist.

    Sendet ein Client für eine gewisse Zeit nichts, so wird ein Timeout ausgelöst, welcher den Client aus der Liste schmeißt, damit keine Clients mehr angezeigt werden, welche eigentlich schon offline sind. Bzw.: Man kann den Client beim beenden eine Nachricht senden lassen, dass dieser sich abmeldet.



    Alles weiter währe schon OT.

    :)
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D

    spYro schrieb:

    1. Es wäre ganz nett, wenn du uns kurz deine Lösung schilderst
    Also..manche werden bestimmt empört drüber sein,aber ich tat es so:
    MySql->Tabelle VON Prog. aus erstellen->Ip durch "IP.Text = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList.GetValue(2).ToString" herausfinden->Es durch Binarys verschlüsseln->Name für die Tabelle(das wird der Username)->Es abrufen durch Prog,zB "Testi",dann wird das was sich in darin befindet abgelesen und entschlüsselt...und sozusagen ist die IP mit nem User "bedeckt" worden..

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „enIking1998“ ()