Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Broadcast

So bloed es klingt, ich bring es nicht zusammen in meinem LAN einen Broadcast zu vollbringen^^.

Also die Situation ist die:
Ich arbeite an einem Chatprogramm (in Java dass aber nicht einenServer hat der immer verfuegebar ist, sondern der immer im LAN erstellt wird. Der Client soll automatisch den Server finden und sich zu ihm verbinden. --> Broadcast "HALLO SERVER WO BIST DU"?, der Server soll die Connection empfangen, annehmen, somit die Quell-IP nehmen und die Verbindung herstellen.

Vom Programmierteschnischen her kann ich alles.
Das einzige Problem ist eben dieser Broadcast.

Derzeit probiere ich es so:

Socket broadCastSocket = new Socket(calculator.getBroadCastAdress(), ConnectionData.broadCastPort);//IP: 192.168.0.255 PORT: 5274
broadCastSocket.getOutputStream().write("Hallo ich bin ein Broadcast".getBytes());
broadCastSocket.close();

Der Fehler lautet:
java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine

Ist auch klar, da keine Verbindung zu den Verbotenen Adressen hergestellt werden darf (verboten: ... .0 und .255)

Irgend eine Ahnung wie ich anders einen Broadcast senden koennte, und auch wieder empfangen kann?

P.S. Platform: Windows
P.SS.Ich koennte natuerlich alle 254 Hosts pingen, und zu jedem eine Nachricht senden, aber der Aufwand ist dann eben hoeher. Wenn ihr meint einfach "Thread-pinging" machen, dann is des sehr Fehleranfaellig, aber naja wenns net geht werd ich s so machen muessen^^   
« Letzte Änderung: 07.01.08, 21:27:34 von Fuxi »

Antworten zu Broadcast:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Koennte es daran liegen, dass du versuchst, einen Streamsocket zu erstellen? Der ist doch immer genau an eine Adresse gebunden. Du brauchst wahrscheinlich nen DatagramSocket, mit dem du Pakete verbindungslos versenden kannst. Also etwa so:

// Parameter nach Wunsch eintragen
DatagramPacket dp = new DatagramPacket( byte[] buf, int length, InetAddress address, int port );
DatagramSocket ds = new DatagramSocket();
ds.send( dp );
ds.close();
 
« Letzte Änderung: 08.01.08, 09:56:58 von Lisaa »

Juhu danke, der Fehler war des Protokoll, haett ich auch frueher draufkommen koennen^^.
Zur Erklaerung damit nicht nur ich gescheiter bin:
Socket/ServerSocket verwendet TCP.
DatagrammSocket verwendet UDP.

Man erstelle, wie du es schon geschrieben hast, einfach ein neues Packet und stecke da alles rein. In einem Codebeispiel wuerde das dann so aussehen:

byte buffer[] = "hallo ich bin ein broadcast".getBytes();
DatagramPacket p = new DatagramPacket(
buffer,
buffer.length,
InetAddress.getByName(calculator.getBroadCastAdress()),
ConnectionData.broadCastPort
);
DatagramSocket broadCastSocket = new DatagramSocket();
broadCastSocket.send(p);
broadCastSocket.close();
Wobei das "calculator.getBroadCastAdress()", eine Klasse von mir ist, die mir IP sachen berechnet/herrausfindet, in diesem Fall holt es die Broadcastadresse (z.B. 192.168.0.255).
Und "ConnectionData.broadCastPort" ist nur eine statische "Bibliothek" von mir, die alle Verbinungs Informationen beinhaltet.
         
Nicht zu vergessen, den Broadcast empfangen:
byte[] buf = new byte[1024];
DatagramPacket p = new DatagramPacket(buf, 1024);
DatagramSocket s = new DatagramSocket(Data.broadCastPort);
s.receive(p);
s.close();
System.out.println(new String(buf));
Wobei diese Ausgabe lauter "Kasteln" liefer wuerde (hinten dran), des is weil des alles 0 Bytes sind, da der String ja nicht so lange ist, das koennte man ja natuerlich so veraendern wie man es braucht.   
« Letzte Änderung: 08.01.08, 18:41:09 von Fuxi »

« Erstellungsdatum von Webseiten erkennenTilgungsplan in C++ programmieren »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
LAN
LAN ist eine Abkürzung und steht für Local Area Network. Übersetzen kann man es als lokales Netzwerk. Dies ist ein kleines firmeninternes oder Heim-Netzwer...

W LAN
WLAN: das steht für "Wireless Local Area Network", ein Funk-Netzwerk.Siehe WLAN. ...

WLAN
WLAN steht für "Wireless Local Area Network" und bezeichnet ein lokales Netzwerk (LAN), bei dem die Daten statt per Kabel auch per Funk überträgen wer...