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:
Hier der Code vom Server:
Und hier noch der Code vom Client:
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));
}
}