# TCP Client funktioniert auf Emulator aber nicht auf Smartphone



## valli (18. Feb 2015)

Hallo,

ich bin relativ neu im bereich Java und versuche eine Verbindung über TCP zwischen einem RaspberryPi (Server) und einem Android Smartphone (Client) herzustellen. Die App funktioniert auf dem Emulator super und "spricht" auch mit dem Server. Als ich allerdings die App auf mein Handy geladen habe, hat es dort nicht mehr funktioniert. Auf dem Server ist keine lauschende IP festgelegt also hört er (im W-LAN) alles was auf dem Port "Gesprochen" wird.
Am Code kann es ja eigentlich nicht liegen, wenn es auf dem Emulator geht !?

Wenn sich doch jemand den Code durchlesen will, einfach schreiben.

Vielen Dank im Voraus für die Hilfe,

Valli


----------



## InfectedBytes (18. Feb 2015)

kommt ne fehlermeldung oder so?
ansonsten, hast du auch die nötigen permissions gesetzt? also android.permission.INTERNET


----------



## valli (18. Feb 2015)

Nein es kommen keine Fehlermeldungen. Und die Internet permission habe ich auch gesetzt.


----------



## dzim (19. Feb 2015)

Wie führst du den Request durch? "Problem" ist (aber dann würde es IMHO eine Fehlermeldung geben), dass du auf Android Geräten keine Netzwerk-Operationen mehr auf dem Hauptthread durchführen kannst. Wenn du die Operation z.b. in einem AsyncTask, oder einem Thread machst: Gut. Sonst: Schlecht.


----------



## valli (19. Feb 2015)

Wenn ich eine Nachricht senden will rufe ich mit: 

```
messsage = "TEXT";
	SendMessage sendMessageTask = new SendMessage();
	sendMessageTask.execute();
```
folgende Klasse auf: 

```
private class SendMessage extends AsyncTask<Void, Void, Void> {
	 
	@Override
	protected Void doInBackground(Void... params) {
		try {
			client = new Socket(IP, PORT); // connect to the server
			printwriter = new PrintWriter(client.getOutputStream(), true);
			printwriter.write(messsage); // write the message to output stream

			printwriter.flush();
			printwriter.close();
			client.close(); // closing the connection

		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

}
```


----------



## valli (21. Feb 2015)

Hallo,

ich habe die letzten Tage nochmal ein bisschen herum probiert und mir ist aufgefallen, die Nachrichten kommen sogar manchmal an, nur sehr verspätet und es kommen nicht alle an.
Woran kann es liegen das die Nachrichten so lange brauchen? (Das Handy ist über ein ziemlich schnelles WLAN Verbunden).

Gibt es vielleicht eine andere bzw. bessere Möglichkeit Java Programme kommunizieren zu lassen?


----------

