Hallo zusammen,
ich bin gerade meine erste Android-App am programmieren, nutze dazu Android Studio unter Windows 7. Ich möchte ein UDP-Paket an einen Rechner versenden. Wenn ich meinen Code im Emulator in Android Studio laufen lassen, funktioniert die App auch und tut was sie soll, das UDP-Paket kommt auf dem Zielrechner einwandfrei an. Wenn ich die App allerding statt auf dem Emulator auf meinem realen Smartphone (Nexus 5) starte (was von der grafischen Oberfläche auch einwandfrei funktioniert) kommt kein Paket beim Zielrechner an.
Sämtliche Ergebnisse, die ich über Google finde, beschäftigen sich eigentlich immer nur mit Problemen, dass es auf dem realen Gerät funktioniert und im Emulator nicht, aber zu dem Problem genau umgekehrt wie bei mir nichts
Hier mal Auszüge aus meinem Code:
In der AndroidManifest.xml habe ich lediglich
hinzugefügt.
Wenn ich die App im Emulator laufen lasse, kommt genau das UDP-Paket mit den 3 Bytes an, auf dem realen Gerät passiert nichts.
Mein PC (auf dem Android Studio und der Emulator laufen) und der Zielrechner (192.168.0.199) hängen im selben Subnetz (über einen Switch verbunden), mein Smartphone hängt über WLAN an einem AP der ebenfalls an den Switch angeschlossen ist. Über ConnectBot kann ich von meinem Smartphone aus den Zielrechner auch einwandfrei anpingen.
Kann es ein Problem mit dem WLAN sein, dass hierüber die UDP-Pakete (generell) nicht gesendet werden können? Oder fehlen mir noch speziell Berechtigungen, die ich in der Manifest-Datei anfordern muss? Allerdings fände ich das seltsam, da es ja im Emulator funktioniert.
Über Tipps oder Vorschläge, was ich probieren könnte, wäre ich euch sehr dankbar
MfG Anub1s
ich bin gerade meine erste Android-App am programmieren, nutze dazu Android Studio unter Windows 7. Ich möchte ein UDP-Paket an einen Rechner versenden. Wenn ich meinen Code im Emulator in Android Studio laufen lassen, funktioniert die App auch und tut was sie soll, das UDP-Paket kommt auf dem Zielrechner einwandfrei an. Wenn ich die App allerding statt auf dem Emulator auf meinem realen Smartphone (Nexus 5) starte (was von der grafischen Oberfläche auch einwandfrei funktioniert) kommt kein Paket beim Zielrechner an.
Sämtliche Ergebnisse, die ich über Google finde, beschäftigen sich eigentlich immer nur mit Problemen, dass es auf dem realen Gerät funktioniert und im Emulator nicht, aber zu dem Problem genau umgekehrt wie bei mir nichts
Hier mal Auszüge aus meinem Code:
Code:
class SendUdpDataTask extends AsyncTask<Integer, Void, Boolean> {
@Override
protected Boolean doInBackground(Integer... params) {
byte[] bytes = new byte[3];
int port = 8888;
InetAddress address = null;
try {
address = InetAddress.getByName("192.168.0.199");
} catch (UnknownHostException e) {
e.printStackTrace();
}
int x = params[0];
int y = params[1];
int z = params[2];
bytes[4*i + 1] = (byte) x;
bytes[4*i + 2] = (byte) y;
bytes[4*i + 3] = (byte) z;
try {
DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, port);
socket.send(packet);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
@Override
protected void onPostExecute(Boolean result) {
Button sendButton = (Button) findViewById(R.id.send_button);
sendButton.setText("done");
}
}
public void sendData(View view) {
new SendUdpDataTask().execute(1, 2, 3);
}
In der AndroidManifest.xml habe ich lediglich
Code:
<uses-permission android:name="android.permission.INTERNET" />
Wenn ich die App im Emulator laufen lasse, kommt genau das UDP-Paket mit den 3 Bytes an, auf dem realen Gerät passiert nichts.
Mein PC (auf dem Android Studio und der Emulator laufen) und der Zielrechner (192.168.0.199) hängen im selben Subnetz (über einen Switch verbunden), mein Smartphone hängt über WLAN an einem AP der ebenfalls an den Switch angeschlossen ist. Über ConnectBot kann ich von meinem Smartphone aus den Zielrechner auch einwandfrei anpingen.
Kann es ein Problem mit dem WLAN sein, dass hierüber die UDP-Pakete (generell) nicht gesendet werden können? Oder fehlen mir noch speziell Berechtigungen, die ich in der Manifest-Datei anfordern muss? Allerdings fände ich das seltsam, da es ja im Emulator funktioniert.
Über Tipps oder Vorschläge, was ich probieren könnte, wäre ich euch sehr dankbar
MfG Anub1s