# W-Lan Problem über Sockets



## RelaX (1. Okt 2014)

Guten Morgen,

ich arbeite nun an einem etwas größeren Android Projekt und komme soweit gut vorran. Jetzt hab ich allerdings ein kleines Problem mit der Verbindung NUR über W-Lan. Bei der Verbindung über den Mobilfunkanbieter habe ich das Problem nicht.

Ich baue eine Socketverbindung wie gewohnt auf:


```
client = new Socket("www.adressse.de", 0815);
            
            writer = new ObjectOutputStream(client.getOutputStream());
            serverThread = new Thread(new MessagesFromServerListener(new ObjectInputStream(client.getInputStream())));
            serverThread.start();
```

Im eigenen Thread werden die Anfragen an den Server wie folgt verschickt:


```
try {
			writer.writeObject(o);
			writer.flush();
		} catch (IOException e1) {
			/*
			 * Socketverbindung lost. Rebuild Clientconnection.
			 */
			try {
				closeToServer();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			SocketConnection.reconnect();
		}
```


Und hier wird im eigenen Thread (MessageFromServerListener) Daten vom Server angenommen:


```
while((o = reader.readObject()) != null) {
            	proxy.executeTransfer(o);
            }
```


Wie gesagt, im mobilfunknetz funktioniert es super aber sobald ich im Wlan bin dauert es trotz 100mbit ewig lange :-(

Was auffällt ist die Tatsache das beim versenden vieler Anfragen an den Server und gleichzeitig vielen Antworten vom Server alles ganz schnell funktioniert. Handelt es sich allerdings nur um eine Anfrage, so dauert das ganze sehr lange.

Eines vorweg: Die Verbindung trennen und wieder aufbauen möchte ich nicht, da die Verbindung automatisch mit der App beendet werden soll. Desweiteren treffen Asynchrone Anfragen auch vom Server am Client an. Also schließen und wieder öffnen kommt nicht in Frage.

Hoffe jemand hat Ahnung von Wifi unter Android.


----------



## dzim (1. Okt 2014)

Die Code-Schnipsel und die Infos reichen leider nicht aus, um fundierte Aussagen zu machen. Ich weiss nur, dass ich bisher mit solchen Operationen keine Probleme hatte - aber ich habe auch keine Sockets offen gelassen. Vielleicht solltest du nicht TCP verwenden sondern auf UDP umschwenken. Da gibt es ja immerhin keine Verbindungen...


----------

