UDP Broadcast Receive mit Android

  • 0 Antworten
  • Letztes Antwortdatum
V

volki73

Neues Mitglied
0
Hallo zusammen,

ich richte mich an dieses Forum in der Hoffnung mir kann jemand helfen.
Wir haben einen Server laufen der sich in unserem Netz per UDP Broadcast zeigt.
Wir wollen nun das unser Android Client uns die IP des Servers anzeigt.
Wenn wir unseren Client als reines Java Programm laufen lassen gibt uns dieser die IP bekannt. Im Android Client eingebaut findet er den Server nicht!
Vielleicht kann mir jemand helfen, wo der Fehler liegen könnte.
Berechtigungen beim Android haben wir folgende gesetzt:

Code:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>


Hier der Code vom Server:

Code:
public class UDPBroadcastServer extends Thread {

    private int port = 7777;

    public UDPBroadcastServer(int port) {
        this.port = port;
    }

    @Override
    public void run() {
        while (true) {
            try {
                DatagramSocket ss = new DatagramSocket();
                ss.setBroadcast(true);
                byte[] b = new byte[100];
                //Packet erstellen mit Broadcastadresse 255.255.255.255
                DatagramPacket p = new DatagramPacket(b, b.length);
                p.setAddress(InetAddress.getByAddress(new byte[]{(byte) 255, (byte) 255, (byte) 255, (byte) 255}));
                p.setPort(1234); // unser broadcastport 1234 

                int i = 0;
                while (true) {
                    String s = "AndroidStatusMonitor:v1;port:" + port + ";status:ready";
                    b = s.getBytes();
                    p.setData(b);
                    // senden des Broadcast per UDP
                    ss.send(p);
                    System.out.println("Broadcast gesendet");
                    try {
                        // pause für 2 Sekunden
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        // kein Fehlerhandling
                    }
                }
            } catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
}

Und hier noch der Code vom Client:
Code:
	public static void main(String[] args) throws IOException  {
		byte[] receiveData = new byte[100];
		 
		   DatagramSocket clientSocket;

			clientSocket = new DatagramSocket(1234);
		
		   clientSocket.setSoTimeout(10000);
		  DatagramPacket receivePacket =
		          new DatagramPacket(receiveData,
		                       receiveData.length);
		  

				clientSocket.receive(receivePacket);

		       
		       System.out.println(receivePacket.getAddress().toString().substring(1));
	}

}
 
Zurück
Oben Unten