Client to Client: LAN-Chat

  • VB6

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Secle.

    Client to Client: LAN-Chat

    Ich hab folgendes Problem:

    Ein Freund von mir macht eine kliene LAN-Party und ich soll ihm ein Programm schreiben, mit dem man die verschiedensten Spiele starten kann, Serverinfos und vieles mehr bekommt. (soll sich jeder bei ankunft installieren).

    Nun mein Problem: es soll ein LAN-Chat geben, der nicht als Host seinen Server verwenden soll!

    Die Rollenverteilung hab ch mir so gedacht:
    Jeder ist Host und Client. Wenn man eine Nachricht schreibt, tritt die Aufgabe als Host in Kraft und wenn man eine Nachricht bekommt, ist man Client.

    1.: Welches Steuerelement benutze ich da??
    2.: Wie verwende ich das Steuerelement für meine Zwecke??
    ?( ?(


    PS: Nur so nebenbei: Weiß jemand, wo ich eine Autorenversion (Testversion) von VB herbekomme?? Damit ich zu mindest 1 VB-Version 100% legal besitze...

    Hi!

    Im einen Chat zu programmieren, wo sich die User selber und gegenseitig suchen würde ich UDP im Zusammenhang von Broadcast benutzen.
    Das funktioniert so:
    Ein Client will eine Nachricht senden. z.B.: "Jue: Hallo!". Diese Nachricht wird dann per Winsock mit UDP an die Broadcastadresse auf einen bestimmten Port gesendet. (Die Broadcastadresse ist im Netzwerk mit der Subnetmask 255.255.255.0 und den IP-Adressen im Bereich von 192.168.0.1 bis 192.168.0.254 die IP-Adresse 192.168.0.255). Alle Clients, die sich im selben Netzwerk (abhängig von der IP-Adresse und nicht vom Kabel !!!) befinden und auf dem bestimmten Port "hören" erhalten diese Nachricht und können sie dann verarbeiten bzw. anzeigen.

    Ich hoffe, dass du alles Verstanden hast,
    Jue ;)
    So kann man das mit TCP/IP machen.

    Jeder sucht alle Computer:
    1. Alle Computer, die im Netz vorhanden sind herausfinden (API)
    2. Mit Winsock dahinverbinden auf bestimmten Port.

    JEder ist sein eigener Server:
    1. Winsock auf bestimmten Port öffnen, damit Clients herausfinden können, ob der Rechner das Programm auf hat.

    Felix Kröger
    Ich habs nich geschafft!
    (Und langsam wirds mit der zeit knapp)

    Die lösung mit UDP klingt ganz gut! Aber...
    Wie geht das?? Ich bräuchte am Besten ein Codebeispiel!

    Und wie verwende ich die API, mit der ich herausfinde wer alles am Netz hägt (Welche IP)??
    (Wie ich das Winsock mit TCP verwende weiß ich!)



    ------=======================------
    || Later added:
    ------=======================------

    Wie man UDP benutzt, weiß ich jetzt von vbarchiv.net:
    vbarchiv.net/archiv/tipp_details.php?pid=630

    Aber wie das gemeint ist, an die ganzen IPs zu senden, kapier' ich noch nich!








    Ich warte noch immer auf die Anwort auf die Frage
    Die lösung mit UDP klingt ganz gut! Aber... Wie geht das??
    !

    Ich kann von einem Computer auf den anderen zugreifen! (per UDP) aber wie kann ich alle Computer durchlaufen ohne eine Fehlermeldeung zu erhalten?? Wie finde ich heraus welche IP zur verfügung steht??

    Bzw.: Wie funktioniert das, was mir der eine Typ mit UDP vorgschlagen hat!? (Hab vergessen wer das war!)


    Bitte eine antwort! (Oder mehrere...) besonders auf die letzte Frage mit dem "Bzw.:"

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()

    Und wie verwende ich die API, mit der ich herausfinde wer alles am Netz hägt (Welche IP)


    Du kannst mit GetHostByName und GetHostName die IP ermitteln, auf welcher die Anwendung läuft. Dann solltest Du aber Pointer beherrschen :

    mit GetHostName ermittelst Du den Namen des Rechners, mit GetHostByName erhälst Du einen Pointer auf den Pointer des IP-Arrays. Das kannst Du dann mit CopyMemory (ehemals RtlMoveMemory) in einer Schleife auslesen.

    Dabei zu beachten ist, daß die IP für den Menschen im Dotted Format vorliegt (192.168.0.1) und für den Rechner einen Long bedeutet.

    Auf Bedarf kann ich Dir mal ein Codebeispiel uppen.
    Ich hab gesucht und 1 brauchbare sache gefunden, die leider nicht funktioniert!

    Es wird eine Fehlernachricht ausgegeben, dass der Variablentyp nicht existiert! Wir auch nirgendwo ge-"type"-t!

    Könnte das daran liegen, dass ich dafür vb5 verwendet hab??