Java Broadcast nutzen



  • Hi !

    Ich versuch einen Client zu schreiben der automatisch die Serverdaten (IPAdresse und Name) über das Netzwerk bezieht. Dazu möchte ich gerne Braodcast benutzen.
    Leider funktioniert das momentan noch nicht so wie ich das will. Ich habe mal folgende Methode aus dem Server und dem Client gepostet.
    Die Idee ist einfach: Der Server sendet seine Informationen über Broadcast und der Client empfängt diese dann. Leider funktionert der Code den ich unten angegeben habe nicht so wie er sollte.

    Weiß jemand was es sein könnte ? Würde mich jedenfalls sehr freuen.

    Code im Server:

    private void sendBroadcastData() {		 
    		try {					 
    			InetAddress broadcastIP = InetAddress.getByName(broadcastIPAsString);			
    
    			//vorbereiten der zu senden Daten (im Format:  'IPAddresse \t Servername' )
    			byte[] dataToSend = (new String(serverIP + "\t" + name)).getBytes("US-ASCII");
    			DatagramPacket broadcastPacket = new DatagramPacket(dataToSend, dataToSend.length, broadcastIP , broadcastPort );			
    
    			//senden der Daten			
    			DatagramSocket broadcastSender = new DatagramSocket();
    
    			if(!broadcastSender.getBroadcast())			
    				broadcastSender.setBroadcast(true);
    
    			broadcastSender.connect( broadcastIP, broadcastPort);
    			broadcastSender.send(broadcastPacket);
    			broadcastSender.close();
    
    		} catch (Exception e) {
    			e.printStackTrace();
    			System.exit(-1);
    		}
    

    Code im Client:

    private boolean joinSession() throws UnknownHostException, SocketException, IOException{		
    
    		//beziehe INformationen über den Server mittels broadcast...		
    		InetAddress broadcastIP = InetAddress.getByName(broadcastIPAsString);
    
    		//beziehe die ServerDaten die von der BroadcastAddresse kommen...
    		DatagramPacket dpacket = new DatagramPacket(new byte[26], 26);
    		DatagramSocket broadcastListener = new DatagramSocket(listenPort, broadcastIP);
    
    		//Daten empfangen...
    		broadcastListener.receive(dpacket);
    		broadcastListener.close();
                return true;
    }
    

Anmelden zum Antworten