UDP - Nachricht angekommen?
Übersicht

judosBetreff: UDP - Nachricht angekommen? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen.
Ich möchte über UDP ein Netzwerk Spiel machen. Nun möchte ich es so machen, dass der Client einfach Spiele suchen kann, ohne dass dieser eine IP des Hosts einzugeben braucht. Dachte mir ich könnte einfach mit dem Host alle 20 Sekunden Nachrichten an alle IP Adressen (192.168.1.x) senden. also eigentlich 256 Pakete (1-256 liege ich da schonmal richtig? oder ist das 0-255? ) Jetzt tritt bei mir das Problem auf, das beim zweiten mal ungefähr 2sekunden dazu nötig sind. Beim ersten mal funktionierte es aber in 8 millisekunden. Kann man also prüfen ob eine Nachricht bei einem Computer angekommen ist, ohne dortiges BB Programm? Um zu verhindern dass man an alle Computer immer wieder Nachrichten senden muss? Oder seht ihr eine andere Möglichkeit dieses Problem zu lösen? (Bitte nicht sagen -> Client soll IP eingeben, andere Spiele kommen nähmlich auch ohne das aus...) mfg judos |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man könnte die PCs mit der WinAPI pingen. Ob das allerdings in 2 sek geht wage ich zu bezweiflen. Geschweige denn in 8ms...
(Es ist übrigens 0-255) mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Genau genommen brauchst Du gar nicht alle IPs durchgehen, sondern kannst sog. Broadcasts benutzen, die automatisch alle Computer im Subnetz adressieren.
Hierzu muss die IP mit 255 enden. Also in Deinem Fall einfach 192.168.1.255. So wie Du bis 255 gehst, werden also alle Clienten 2x angesprochen... Könnte mir vorstellen, dass es auch irgend ein Windows-Tool gibt, das die vorhandenen Computer im Netzwerk anpingen und deren IPs zurückliefern kann. |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
judos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm naja es müsste ja nicht in 8ms gehen, aber man sollte zumindest in max.5 Sekunden überprüfen können welche PCs/ IPs mit UDP anzusteuern sind.
Die 5Sekunden könnten ja dann beim Laden des Spiels oder so anfallen. Und man muss es nur einmal machen im Spiel... Wie ginge das denn mit WinAPI ?? mfg judos /edit: Ich muss die Nachricht nur an 192.168.1.255 senden, dann bekommen alle Rechner von 192.168.1 diese Nachricht? ![]() ![]() |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sry... Ich meinte nicht WinAPI sondern die cmd-Befehle. Das könnt allerdings noch langsamer werden, weil ich da nur die Möglichkeit kenne, die Ausgabe in eine Datei umzuleiten und diese Datei nachher zu öffnen und zu analysieren. Mach einfach Start-Ausführen-"cmd" und gib in der Konsole "ping" ein. Da gibts eine Erklärung ![]() Und das mit dem Broadcast wusste ich auch nicht ![]() mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
judos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ach kein problem...
dachte gleich an die cmd befehle, da ich mich mit WindowsApi sowieso noch nicht so vertraut fühle ~~ werd mal beides anschauen und falls es probleme gibt mich wieder hie melden ![]() Vielen Dank nochmals Eingeproggt und BIG BUG! mfg judos |
||
judos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@BIG BUG: Hmm bist du dir sicher dass ich einfach nur die IP am schluss 255 nehmen muss?
Die Nachrichten kommen nämlich bei anderen Computer einfach nicht an. Wenn ich aber gezielt eine Nachricht an einen Computer sende, kommt die Nachricht an. Muss nochmals Code durchgehen, vielleicht liegts auch an mir, aber die wahrscheinlichkeit dafür ist sehr klein ![]() mfg judos |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zuerst mal muss es auf keinen Fall 196.168.1.x sein. Bei mir ist es z.B. .0.x, oder war auch schonmal .178.x.
Um die Broadcast-Addresse in einem IPv4 Netz zu erhalten must du deine eigene IP nehmen, und mittels einem binären AND mit der Subnetzmaske verrechnen. An diese Addresse sendest du dann EIN Paket auf einem speziellen Port jenseits des Nutz-Bereiches, welches fragt, ob hier noch andere Spieler sind. Ein spieler empfängt das Paket, und antwortet dir. Edit: Wikipedia Falsch gelesen. Du must bei deiner IP alle Host-Bits auf 1 setzen. Bei 196.168.0.x wären das die letzen 8 bits, sprich es würde in der Tat 192.168.0.255 daraus werden. |
||
judos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hehe ach ok gut!!
habe gemerkt, dass es doch an mir lag und mit 192.168.1.255 funktioniert. noch eine letzte Frage: geht das auch wenn man den grösseren Bereich abtasten will? Also alle Rechner mit der IP 192.168.X.Y ?? So dass man nur ein einziges Paket senden muss? oder soll ich das einfach so machen, dass das Programm an jede 192.168.x.255 ein paket sendet? mfg judos |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group