Broadcast - senden eines Packetes an alle rechner im netz

Status
Nicht offen für weitere Antworten.

angelchr

Mitglied
hallo zusammen!!!

nach erfolgloser suche bei google & co hab ich mich entschlossen bei den spezialisten hier im forum nachzufragen.

Mein Problem:

Eine Client Server Applikation, bei der der Server auf einen bestimmten port "horcht" nun soll der Client ALLE "horchenden" Server im Netz-Segment finden und auflisten. Dannach kann ein Server ausgewählt werden.


Mein Lösungsansatz:

- ermittlung der IP
- ermittlung des Netzes
- senden eines UDP Packetes an alle rechner im Netz auf dem Port auf dem der Server horcht.
- wenn der Server etwas mit dem Packet anfangen kann, schickt er eine Antwort.


Mein Probelm:

Ist es möglich eine art Broadcast zu veranstalten? also eine anfrage an zb 192.168.1.255 auf Port X ?
Wenn Ja wie mach ich das?


Ich freue mich auf die Antworten


Gruß Angelchr
 

HoaX

Top Contributor
nim einfach die 255.255.255.255, die sendet dann einen broadcast in alle direkt erreichbaren netze. analog zur adresse 0.0.0.0 an der du deinen server lauschen lassen kannst, dann kannst auf allen ips empfangen die der rechner hat.

oder was meinst du mit
Ist es möglich eine art Broadcast zu veranstalten? also eine anfrage an zb 192.168.1.255 auf Port X ?
Wenn Ja wie mach ich das?
einfach hin senden und gut is!
 

angelchr

Mitglied
also versteh ich das richtig ich mach nen serversocket auf 0.0.0.0 auf.
und wie schick ich die anfrage an den "möglichen" server ? mit datagramSocket oder mit Streamsocket ? Haste vielleicht ein bsp ??
Danke

Gruß

Angelchr
 

HoaX

Top Contributor
angelchr hat gesagt.:
also versteh ich das richtig ich mach nen serversocket auf 0.0.0.0 auf.
ja, außer du willst nur auf einer bestimmten ip lauschen ...

angelchr hat gesagt.:
und wie schick ich die anfrage an den "möglichen" server ? mit datagramSocket oder mit Streamsocket ? Haste vielleicht ein bsp ??
da mir nicht bekannt ist dass java von haus aus einen StreamSocket hat, würe ich sagen ganz normal mit DatagramSocket.
ein beispiel zu schreiben bin ich jetz zu faul, die api von DatagramSocket ist nun aber auch wirklich nicht schwer. sicherlich lesenswert für dich ist http://java.sun.com/docs/books/tutorial/networking/index.html
 

louis

Mitglied
Kleine Info: leider antworten nicht alle Betriebssysteme auf einen IP Broadcast. Meines Wissens nach z.B. Windows in der Grundeinstellung gar nicht.

mfg Louis
 
G

Gast

Gast
Ich würde das so lösen, dass du zuerst die IP des lokalen Netzes erfragst und die Subnetzmaske.

SM: 255.255.255.0
Netz: 192.168.1.0

Und dann versuchst für jede IP einen Dienst mit Port zu binden. Kann der Dienst gebunden werden existiert logischerweise keiner für die IP-Port kombination.
 
T

tuxedo

Gast
Da hatten wir schon das Problem dass das nicht schnell genug geht. Hintergrund: Windows lässt per Default nur 10 gleichzeitige Verbindungen zu. Muss man also erst anpassen bevor man recht schnell "suchen" kann.

- Alex
 
G

Gast

Gast
Dann muss man halt nach jedem verindungsaufbau ihn gleich wieder schließen.
 
T

tuxedo

Gast
Ja, das schon... Nur wenn du einen 192.168.0.x Bereich durchsuchen willst und zwischendrin Timeouts auftreten, dann dauert das halt doch etwas lange. Auch wenn man die Timeouts auf nur 1 oder 2 Sekunden runterschraubt: Je mehr Anfragen ein Timeout produzieren, desto länger dauert's. Im Worstcase in diesem Fall dann 254 * "TimeOut" .. Und bei 1 Sekunde macht das schon über 4 Minuten ... Und wenn man dann nur 10 Verbindungen gleichzeitig testen kann wird's doof. Weil dann bremst das ungemein.

- Alex
 

Niki

Top Contributor
Hast du dir schon den MulticastSocket angeschaut? Der könnte doch genau das sein was du brauchst. Innerhalb eines Segments funktioniert das. Ich habs schon mal ausprobiert.
 

angelchr

Mitglied
ich danke schon mal für die vielen antworten. Damit hab ich schon mal einen einblick in die Thematik. Allerdings frag ich mich dann wie das andere Programme machen. Vor allem Spiele. Nehmen wir mal als Bsp. das gute alte Counter-Strike. Szenario: Ich bin auf einer LAN-Pary klick da auf LAN-Game (ging das so???) dann werden mir da alle Server aufgelistet. Wie um alles in der Welt wird das gemacht, wenn da ein ganzes Netz durchsucht wid? Das mit den 254*Timeout klingt schon logisch aber das hat doch nie so lange gedauert. Mein Ziel ist es genau so eine Applikation zu erstellen.

Angelchr
 
T

tuxedo

Gast
Ich weiß nicht genau, aber ich vermute mal, dass solche Spiele ein wesentlich geringeres Timeout nutzen. Im LAN sind die Antwortzeiten so gering, dass man das Timeout sicher auch 100 Millisekunden runterdrehen kann.
Da wird das ganze dann nautürlich schon schneller.

Im Worst-Case wären das dann, wenn immer 10 gleichzeitig überprüft werden können, etwa:

254 / 10 * 0,1sek = 2,54 Sekunden

Nimmt man 1 Sekunde timeout an, so wäre man bei 25,4 Sekunden. Auch das wäre sicher noch "okay". Sollte man dann halt wenigstens ne ProgressBar einblenden um dem Testfortschritt anzuzeigen.

Das ganze wurde wie gesagt schonmal diskutiert:

Musst hier mal im Forum suchen ob du den Thread wieder findest. Ging um Portscanner mit Java. Der zu testende Port war glaub 10.000. Vielleicht findest du den Thread ja. Hab ihn jetzt auf die schnelle nicht gefunden.

- Alex

[update]

gefunden:
http://www.java-forum.org/de/viewtopic.php?t=56081&highlight=port+10000
http://www.java-forum.org/de/viewtopic.php?t=56549&postdays=0&postorder=asc&start=0
 
G

Gast

Gast
Es ist ja auch so dass ein Spiel meines erachtens nicht alle Ports nutzt sondern nur bestimmte (oder sogar nur einen). Bei 254 möglichen IP Adressen sieht die rechnung dann so wie rchtigerweise von alex gepostet aus.

Die Thematik eines Portscanners ist aber anders, da für eine IP sämtliche Ports durchgegangen werden und nicht wie bei CS, für einen Port, alle IPS im Netz. Das verringert die Zeit enorm.

ich denke eh, dass das ganze anders läuft. Ich z.B. würde für den Server einen Namensdienst registrieren, sodass man nur nach einen Nmanesdienst für den Rechner fragen muss (siehe RMI)
 

HoaX

Top Contributor
louis hat gesagt.:
Kleine Info: leider antworten nicht alle Betriebssysteme auf einen IP Broadcast. Meines Wissens nach z.B. Windows in der Grundeinstellung gar nicht.

mfg Louis

was du meinst ist ein broadcast-ping. normale udp broadcasts sollten überall durch gehen.


Gast hat gesagt.:
Ich würde das so lösen, dass du zuerst die IP des lokalen Netzes erfragst und die Subnetzmaske.
nur blöd dass man mit java nicht einfach so die subnetmasken herausbekommt.


für jedes normale heimnetz sollte auf 0.0.0.0 lauschen und an 255.255.255.255 senden funktionieren.

lan-spiele machen auch nur einen broadcast.
 

anfänger15

Bekanntes Mitglied
Bei Counter-Strike kenn ich mich nicht so aus aber z.B. Battlefield(auch andere) benutzt einen Namesserver und bei dem Server melden sich dann alle Server an und sagen hallo ihr könnt mich unter ... erreichen. Die Clients fragen dann beim Namensserver nach und der schickt ihnen dann eine liste mit allen Servern die mommentan laufen.
 

angelchr

Mitglied
Vielen Dank leute Ihr habt mir echt weiter geholfen.
Mit diesen Ansätzen kann ich jetzt mal an die arbeite gehen.
Also vielen Dank nochmal an alle die hier mitgewirkt haben.

Gruß

Angelchr
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
J Framework mehrere Clients/ Server-Broadcast/oracle XE/ XML Netzwerkprogrammierung 1
I Server schickt eine Nachricht an Broadcast Netzwerkprogrammierung 2
S UDP Broadcast - Pakete kommen nicht immer an Netzwerkprogrammierung 15
J UDP Broadcast Netzwerkprogrammierung 14
Kr0e Broadcast, Multicast, IPv4,6 ? Netzwerkprogrammierung 2
V "Broadcast" mit Java ? Netzwerkprogrammierung 3
OnDemand Daten per API senden, parallel Netzwerkprogrammierung 9
M Socket Senden an alle verbundenen Clients Netzwerkprogrammierung 3
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
E Socket Befehl senden und antowrt bekommen ! Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
L Strings an Server senden und in MYSQL speichern? Netzwerkprogrammierung 3
L Socket Nachrichten senden Netzwerkprogrammierung 3
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
M Socket Bilder senden Netzwerkprogrammierung 1
H HTTP REST Jersey - PUT-Beispiel von Client senden Netzwerkprogrammierung 0
W Socket Byte Array senden Netzwerkprogrammierung 2
G Mail senden funktioniert nicht mit SSL Netzwerkprogrammierung 7
M MultiClient Server - Senden an alle Clients Netzwerkprogrammierung 8
X UDP - Zu großes Paket senden Netzwerkprogrammierung 1
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
M Teilnehmerliste vom Server auch an alle Clients senden Netzwerkprogrammierung 0
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
I Kleine Dateien senden Netzwerkprogrammierung 3
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
S Server-Client: Image senden Netzwerkprogrammierung 2
B Socket BufferedImage senden "ohne speichern" Netzwerkprogrammierung 7
P Socket Daten senden mit ServerSocket? Netzwerkprogrammierung 2
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
K Socket Senden und abspeichern Netzwerkprogrammierung 34
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
D Strings per Schleife zum Client senden Netzwerkprogrammierung 4
D daten per post senden Netzwerkprogrammierung 3
M Senden von Daten nicht direkt möglich? Netzwerkprogrammierung 6
B SSH mit Jsch, mehrere Befehle senden Netzwerkprogrammierung 4
A Socket Server: Message an verschiedene Clients senden Netzwerkprogrammierung 4
F Verschiedene Datentypen senden Netzwerkprogrammierung 4
M Befehle an externes Java-Programm senden Netzwerkprogrammierung 8
1 Datei senden/empfangen funzt nicht... Netzwerkprogrammierung 5
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
Weltall 7 HTTP Dateien an PHP-Skript senden Netzwerkprogrammierung 11
T Outputstream Byte-Array senden Netzwerkprogrammierung 2
N Senden eines Arrays Netzwerkprogrammierung 6
F Char über Netzwerk senden Netzwerkprogrammierung 6
C Befehle über ein GUI an Server senden Netzwerkprogrammierung 15
J Befehle an Server senden Netzwerkprogrammierung 5
L Zeitspanne für erneutes senden Netzwerkprogrammierung 16
Kr0e Ggf. Performanceproblem durch Senden von vielen kleinen Buffern Netzwerkprogrammierung 17
S Socket OutputStreams senden zu oft Netzwerkprogrammierung 6
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
F Erhalten und Senden von Nachrichten anhand des Indexes des Clients Netzwerkprogrammierung 19
Akrillo Datei per Netzwerk senden Netzwerkprogrammierung 10
KeNnY_tHe_OwNeR Empfangen geht, Senden nicht ?! Netzwerkprogrammierung 18
B Befehle an Gameserver senden bzw. empfangen Netzwerkprogrammierung 2
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
T HttpClient - Senden via Post Netzwerkprogrammierung 12
Q Datein von Windows nach Mac senden Netzwerkprogrammierung 4
S Bild-Datei von Servlet an Browser senden Netzwerkprogrammierung 8
M Dateien über TCP/IP senden Netzwerkprogrammierung 18
Q NullPointExeption beim Versuch byte[] zu senden/writen Netzwerkprogrammierung 3
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
R Mehrere Dateien über einen Socket senden Netzwerkprogrammierung 2
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
G Information an Server senden? Netzwerkprogrammierung 4
D PDF und integer senden Netzwerkprogrammierung 6
M BufferedImage an PHP-Script senden Netzwerkprogrammierung 4
J Problem beim Senden von File Netzwerkprogrammierung 4
S String[] über Socket senden Netzwerkprogrammierung 3
G unbekannte Zeichen beim senden und lesen Netzwerkprogrammierung 2
V Mehrere Streams durch einen Stream senden Netzwerkprogrammierung 14
T Image aus Applet an PHP Seite senden? Netzwerkprogrammierung 3
D BufferedImage über das Netzwerk senden Netzwerkprogrammierung 2
C Flash Daten an Java senden, wie serialisieren? Netzwerkprogrammierung 3
R Bytes als Rohdaten über Socket senden Netzwerkprogrammierung 3
E rxtx serielles senden von Daten Netzwerkprogrammierung 2
D Socket, Daten über BufferedWriter senden Netzwerkprogrammierung 18
V Problem beim Senden von Dateien Netzwerkprogrammierung 4
W Hexadezimal über RS232 senden Netzwerkprogrammierung 9
L webformular automatisch erstellen, senden und auswerten . Netzwerkprogrammierung 2
G Anfrage an Suchmaschine senden Netzwerkprogrammierung 11
M TCP Socket und Server int senden und empfangen Netzwerkprogrammierung 6
M datagramSocket senden u. empangen? Netzwerkprogrammierung 2
V Java /Matrizen senden über TCP/IP / double Netzwerkprogrammierung 2
W Socket Client-Server Verbindung. Wie Strings senden? Netzwerkprogrammierung 6
M HTTP Requests verarbeiten und Response senden mit Java Netzwerkprogrammierung 14
G Problem bei Objekt senden von server zu client Netzwerkprogrammierung 6
K RMI und kontinuirliches senden von Datenpacketen Netzwerkprogrammierung 2
N Messwerte über TCP senden Netzwerkprogrammierung 3
F Datei senden und empfangen Netzwerkprogrammierung 4
M Ein HTTP-request aus Java heraus senden Netzwerkprogrammierung 3
N Hexcode an ein Programm senden. Netzwerkprogrammierung 4
I Dateien schnell/synchron senden Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben