Ich habe da mal noch eine Frage zur 39dll. Ist es möglich das man eine Server Liste von den gehosteten Spielen angezeigt bekommt und man dann bei einem joinen kann? Das es praktisch keinen Master Server gibt sondern jeder sein eigenes Spiel hosten kann und dann die Leute joinen. Ich hab schon die Foren abgesucht aber nichts wirklich brauchbares gefunden.
Server Liste mit der 39dll
-
-
Jain, irgendwoher muss der Client ja die Server-IPs haben.
Du musst keinen Masterserver laufen lassen, da gäbe es auch noch andere Möglichkeiten.
Das würde über MySQL gehen, mit Dateien auf einem Webspace, mit PHP z.B. (frag mich nicht wie), und so weiter...
WoW macht sich das ganz einfach (Private Server):
Irgendwo im Internet steht die IP oder ne Domain, die gibt man in eine Datei das ein (bei WoW heißt das realmlist.wtf). Feddisch -
Und wie sieht's im LAN aus? Ich meine, das geht doch bei jedem RTS.
-
Der Client könnte ein Broadcast-Paket (ein Paket, das an alle Rechner eines Subnetzs adressiert ist) versenden. Alle Server würden das Paket empfangen und wiederrum ein Paket an den Client senden, dann wüsste der Client, welche Server vorhanden sind. So ähnlich funktioniert übrigens DHCP, das Protokoll zur dynamischen Vergabe von IP-Adressen.
Andersrum wäre es auch denkbar: Alle Server senden in kurzen Intervallen ein Broadcast-Paket, und die Clients schauen halt, was sie so empfangen.❧ -
Kannst Du mir erklären, wie genau das geht? Ich muß doch einen Socket haben, den öffne ich mit "tcpconnect". Wenn ich jetzt 255.255.255.255 schreibe, kommt nur "unable to connect" - ich komm nicht dahinter. Es gibt doch nur tcplisten und tcpconnect?
-
Derartige Kommunikation passiert auch über das UDP, und nicht über das TCP. Beim UDP gibt es im gegensatz zum TCP keine Verbindungen, sondern nur einzelne Pakete. Du wirst wohl oder übel eine DLL brauchen, die UDP unterstützt.❧
-
39dll unterstützt udp. Aber was ist mit dem "socket"? Es gibt eine Funktion "udpconnect", die wohl einen Socket "erstellt".
Ist es das? -
Und woher weiss man, wer sich in diesem "Sub-Netz" befindet?
Alle möglichen IPs abfragen?Kann mir das mal einer erklären?
"das war meine letzte flamewar PM an dich ." -
Melancor: Ich würde davon ausgehen. udpconnect dürfte keine Verbindung herstellen, sondern nur ein UDP Socket öffnen (sprich ein Socket vom Betriebsystem anfordern). Da keine Verbindung aufgebaut wird must du auch keine IP-Adresse angeben. Du kannst durch dieses Socket dann einzelne Pakete an einzelne IP-Adresse senden.
blubberblub: Man muss gar nicht wissen, wer sich im Subnet befindet. Es gibt eine spezielle Broadcast-Adresse (die vom Subnetz abhängig ist), die alle IP-Adressen im Subnetz umfasst. Das ist ja der trick daran.❧