Chat über LAN per WinSock



  • Hallo Leute.

    Ich hatte mir gedacht, ich programmiere mal einen Chat in der WinAPI mit WinSOCK. Es gibt zwar schon LAN-Chats zu Hauf, aber das ist nicht das Richtige für mich. Da fehlen diverse Features.

    Das Interface beherrsche ich im Schlaf... 🙂

    Mein Konzept für den WinSOCK aufbau ist ohne Verbindungen:

    Das soll eigentlich so sein:

    Wenn ein Chat eine Message abschickt, wird die an alle Netzwerkteilnehmer gesendet. Quasi ohne Verbindung wird ein TCP/IP-Packet gesendet, welches den Rechner, User und die Nachricht enthält. Wenn sich ein User anmeldet, schickt er an alle Rechner ein Status-Packet, was dann bewirkt, dass die anderen den User in einer Liste sehen können. Wenn ein User geht, wird er per Status-Packet aus der Liste bei allen gedroppt. Wenn ein User nach 5 Minuten keine Status-Message sendet (macht das proggi autom), wird der User gedroppt.

    Vorteile:
    - Keinen Server
    - Einfache Handhabung

    Nachteile:
    - ???

    Das einzige Problem, was ich sehe, und das ich beantwortet haben muss, bevor ich mit meinem Konzept an den Start gehe, ist:

    Wie sende ich ein TCP-Packet an ALLE rechner im Netz? Klar:: Broadcast-Adresse! Aber ich habe gegooglet und da steht, dass man nur UDP broadcasten kann. >( Also was tun? Alle Rechner ermitteln? Welche möglichkeiten gibt Windows mir?

    Vielen Dank, ich hoffe die Problemstellung ist einleuchtend.

    Danke.



  • silent_c schrieb:

    Nachteile:
    - ???

    kommunikation in andere (sub)netze ist äusserst schwierig.
    🙂



  • gut, ist mir nicht eingefallen, aber stimmt natürlich. Aber mann könnte doch an alle Subnetze, die man will, broadcasten. Dann macht man halt einen Konfig-Dialog, wo 255.255.255.0 schon voreingestellt ist. Außerdem haben die meisten nur 1 subnetz.



  • Hi

    silent_c schrieb:

    Das Interface beherrsche ich im Schlaf... 🙂

    Ist ja schön für dich wennste die Funktionen + ihre Übergabeparameter auswendig gelernt hast.
    Wennste jetzt aber die Funktionsweise von Protokollen wie z.B. TCP ned verstehst bringt dir das relativ wenig.

    silent_c schrieb:

    Mein Konzept für den WinSOCK aufbau ist ohne Verbindungen:

    Quasi ohne Verbindung wird ein TCP/IP-Packet gesendet
    ....

    Ich schlag mal vor, dass du erst mal nach den Unterschieden von TCP/UDP googelst ;).
    Einer wäre da z.B. das TCP, im Gegensatz zu UDP, einen virtuellen Kanal mit dem sogenannten Drei-Wege-Handshake aufbaut und somit nicht verbindungslos ist

    Gruße Pingu



  • Ja, da hast du Recht. Sorry.

    Aber nichts desto Trotz möchte ich die Brodcast-IP des Netzwerks herausbekommen, um an Alle etwas zu senden.



  • Heyho,
    ich bins nochmal :).
    Hier das sollte evtl. das richtige sein:
    GetIpAddrTable Function

    Gruß Pingu

    PS: wennste mal ned weiss nach was für Funktionen du suchen sollst, kannste z.B. ein bestehendes Prgramm das deine gesuchte Funktion bietet, in deinem Fall z.B. ipconfig.exe, mit z.B. dem Dependency Walker nach evtl. brauchbaren Funktionen durchsuchen. Hab ich grad gemacht und bin dann mit der MSDN auf diese Funktion gestossen.



  • Danke.

    Aber ich glaube, dass das nicht das Richtige ist, weil:

    - Ich habe mir ein Whitepaper über die Konvertierung von IPv4 und IPV6 durchgelesen, und festgestellt:

    Wenn ich von Anfang an auf IPv6 setze (support IPv4), ist das Programm besser für die Zukunft geeignet.

    Allerdings gibt es hier Probleme:

    Wie mache ich ein sendto, welches a) mit IPv4 und IPv6 funktioniert an alle PCs im Netz (Broadcast / Multicast?)

    Kann mir jm. vielleicht helfen?

    Ach übrigens: Ich habe eingesehen, dass UDP sich nicht fürn Chat eignet, mache nur UDP, um einen Chat-Server zu suchen. Dafür muss ich aber einen Broadcast machen. Wenn kein Server gefunden wird, wird autom. einer erstellt.

    Danke.

    Danke.


Anmelden zum Antworten