Laden...

Nachricht per UDP an Netzwerk senden

Erstellt von Saavedro vor 19 Jahren Letzter Beitrag vor 19 Jahren 5.414 Views
S
Saavedro Themenstarter:in
4 Beiträge seit 2004
vor 19 Jahren
Nachricht per UDP an Netzwerk senden

Hallo,

Im Moment bin ich dabei, ein kleines Netzwerkspiel zu basteln. Dabei soll einmal die Möglichkeit bestehen, ein Spiel auf seinem Rechner zu hosten oder eben einem Spiel beizutreten.
Nun stehe ich vor dem Problem, wie ich effektiv alle Hosts im Client auflisten kann. Soweit ich weiß läuft es doch bei "normalen" Spielen so, dass die Hosts dauerhaft eine Nachricht über UDP herausschicken, die im gesammten Netzwerk von einem auf entsprechendem Port hörendem UDP-Client empfangen werden kann. Dafür griff ich bisher zu einem System.Net.Sockets.UdpClient-Element, bekam es aber nicht wirklich hin.
So also meine Frage: Wie bekomme ich das hin? Hat da jeman eine Lösung für oder einen Link? Prinzipiell reicht mir auch ein Schubs zu der/den benötigten Funktionen, ich bastel gerne selbst weiter =)

mfg & besten Dank

L
667 Beiträge seit 2004
vor 19 Jahren

Warum machst Du Dir nicht eine ArrayList in Deinem Client und lässt einen Host, sobald er "lebendig" wird ein Event losschicken, dass von allen Client abonniert wird, woraufhin die Clients den Host und die notwendigen Verbindungsinfos in ihrer ArrayList abspeichern ?

Wird ein Host geschlossen oder meldet sich aber, oder sonstwas, schickt er wieder ein entsprechendes Event an alle Clients woraufhin die Clients ihn wieder aus der Arraylist rauswerfen.

Wäre nur so ne Idee und ich bin nicht sicher ob das das ist was Du eigentlich wissen wolltest.

"It is not wise to be wise" - Sun Tzu

S
Saavedro Themenstarter:in
4 Beiträge seit 2004
vor 19 Jahren
nope

Danke für die Antwort, aber es ist nicht ganz das, was ich suche.
Bei dem was du schreibst würde es ja voraussetzen (zuminest sehe ich das so), dass es einen festen Host geben muss, der die entsprechenden Daten verschickt. Das soll aber nicht der Fall sein, bei dem Spiel kann jeder selbst entscheiden ob er ein Spiel hosten möchte oder einem irgendo im Netzwerk vorhandenem beitreten. Der Client muss dazu also irgendwie wissen, wo ein Spiel offen ist.
Aus dem Grunde wollte ich erreichen, dass der Host, sofern er auf einen Teilnehmer wartet, eine UDP-Nachricht in die Netzwerkgruppe sendet welches von Clients empfangen werden kann. TCP/IP ist ungünstig da ich dort ja wieder eine richtige Verbindung aufbauen muss...

Beispiel vielleicht zur Verdeutlichung: Sagen wir alle Spieler befinden sich im LAN und haben eine IP im Bereich 192.168.12.000 bis 192.168.12.255. Nun soll jemand, der ein Spiel hostet, diesem gesammten Bereich eine Nachricht schicken (auf einem bestimmten Port) welcher von Clients im gleichen Bereich empfangen werden kann sofern sie auf jenem Port lauschen.

Was mir fehlt ist eben die Funktion, wie ich eine Nachricht an diesen ganzen IP-Bereich schicken kann. Mittels Schleife ist es recht unschön finde ich, es muss doch irgendwie auch anders gehen, oder?

Grüße und noch einen schönen Abend,

C
10 Beiträge seit 2004
vor 19 Jahren

also bei ip adressen sind 255 die broadcast adressen, für dein fall also einfach eine udp an 192.168.12.255 und es macht was du willst!, falls nicht mach an 255.255.255.255, das klappt sicher

in der praxis übrigens senden die clients ein broadcast wenn sie einen server suchen, und die vorhanden server antworten dann darauf, also andersrum wie du es vorhast.

S
Saavedro Themenstarter:in
4 Beiträge seit 2004
vor 19 Jahren
Danke

Vielen Dank für die Antwort.

Werde ich dann gleich einmal ausprobieren.

Grüße

C
10 Beiträge seit 2004
vor 19 Jahren

erst probieren und dann antworten wär sinnvoller 🙂

S
Saavedro Themenstarter:in
4 Beiträge seit 2004
vor 19 Jahren

also, es funktioniert mit den 255 an entsprechender stelle bestens. danke dir

Grüße