| |||||||
Das Thema "Socket Verbindung löst BufferOverflow aus" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
| ich bastel gerade für die Uni an einer App, die mit einem Server kommuniziert. Der Server läuft und die App ebenfalls. Leider führt die Socket-Verbindung auf einen Win7-Rechner, der durch eine Firewall geschützt ist zu einem BufferOverflow, da der Windows-7-Rechner wohl auf die Eingabe von Username und Passwort wartet.. Ich fange schon eine UnknownHost- und I/O-Exception ab aber das hilft in diesem Fall leider nicht. Mein Code Abschnitt: Code: try {
echoSocket = new Socket(ipAdress, port);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in2 = new BufferedReader(new InputStreamReader(echoSocket
.getInputStream()));
connected = true;
System.out.println("OUTPUT: " + in2.readLine());
} catch (UnknownHostException e) {
System.out.println("UnknownHost");
connected = false;
} catch (IOException e) {
System.out.println("I/O-Exception");
connected = false;
} Eine Exception wird mit im DBMS-LogCat leider nicht ausgeben.. Da Handy arbeitet halt und läuft irgendwann in den Overflow.. Viele Grüße Chris |
| | |
| | #2 (permalink) |
| Junior Mitglied Registriert seit: 18.07.2010
Beiträge: 44
Abgegebene Danke: 0
Erhielt 5 Danke für 5 Beiträge
| Kommt der BufferOverflow auf dem WIN7-Rechner oder auf deinem Handy?
|
| | |
| Folgender Benutzer bedankt sich bei Maddi für diesen Beitrag: | ChrisMobile (07.12.2011) |
| | #3 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
|
Auf dem Handy. Ich konnte es nun aber schon etwas weiter eingrenzen. Es ist doch kein BufferOverflow, obwohl es sich ganz ähnlich verhält! Die Last steigt jedoch nicht, dazu habe ich unten ein Ausschnitt aus dem LogCat ausgelöst. Im LogCat bekomme ich nach dem starten der App nur die Meldung: keyDispatchingTimedOut (Log ist unten). Das Problem ist, dass sich das Handy dank der Win7-Firewall nicht mit dem Rechner verbinden kann aber eben auch keine UnknownHostException auftritt. Die GUI ist natürlich eingefrohrern und nix geht mehr, bis Android fragt o die App beendet werden soll. Natürlich kann ich alles in einen Thread auslagern aber es kommt dank Firewall eben gar keine Verbindung zu Stande, gibt es eine Möglichkeit nur für den Verbindungsversuch ein Timeout anzugeben? Wenn die Firewall abgestellt wird, klappt es ohne Probleme. Code: 12-05 16:24:31.664: E/ActivityManager(194): ANR in de.uni.sCg.acc (de.uni.sCg.acc/.Login), time=64098484 12-05 16:24:31.664: E/ActivityManager(194): Reason: keyDispatchingTimedOut 12-05 16:24:31.664: E/ActivityManager(194): Load: 2.81 / 7.87 / 7.41 12-05 16:24:31.664: E/ActivityManager(194): CPU usage from 25634ms to 0ms ago: 12-05 16:24:31.664: E/ActivityManager(194): 0.6% 155/akmd: 0% user + 0.6% kernel 12-05 16:24:31.664: E/ActivityManager(194): 0.4% 194/system_server: 0.1% user + 0.2% kernel / faults: 10 minor 2 major 12-05 16:24:31.664: E/ActivityManager(194): 0.1% 26362/android.process.media: 0.1% user + 0% kernel / faults: 60 minor 12-05 16:24:31.664: E/ActivityManager(194): 0% 4/events/0: 0% user + 0% kernel 12-05 16:24:31.664: E/ActivityManager(194): 0% 60/w1_bus_master1: 0% user + 0% kernel 12-05 16:24:31.664: E/ActivityManager(194): 0% 73/adbd: 0% user + 0% kernel / faults: 67 minor 12-05 16:24:31.664: E/ActivityManager(194): 0% 356/com.android.phone: 0% user + 0% kernel / faults: 23 minor 12-05 16:24:31.664: E/ActivityManager(194): 0% 26339/de.uni.sCg.acc: 0% user + 0% kernel 12-05 16:24:31.664: E/ActivityManager(194): 0% 57/synaptics_wq: 0% user + 0% kernel 12-05 16:24:31.664: E/ActivityManager(194): 0% 259/com.android.systemui: 0% user + 0% kernel / faults: 2 minor 12-05 16:24:31.664: E/ActivityManager(194): 0% 393/dhd_dpc: 0% user + 0% kernel 12-05 16:24:31.664: E/ActivityManager(194): 0% 418/wpa_supplicant: 0% user + 0% kernel 12-05 16:24:31.664: E/ActivityManager(194): 0% 23443/com.google.android.apps.maps:NetworkLocationService: 0% user + 0% kernel / faults: 14 minor 12-05 16:24:31.664: E/ActivityManager(194): 0% 25665/com.google.android.apps.unveil: 0% user + 0% kernel 12-05 16:24:31.664: E/ActivityManager(194): 0% 26396/logcat: 0% user + 0% kernel / faults: 1 minor 12-05 16:24:31.664: E/ActivityManager(194): 1.2% TOTAL: 0.4% user + 0.6% kernel + 0% iowait + 0% softirq 12-05 16:24:31.664: E/ActivityManager(194): CPU usage from 491ms to 1008ms later: 12-05 16:24:31.664: E/ActivityManager(194): 1.2% 155/akmd: 0% user + 1.2% kernel 12-05 16:24:31.664: E/ActivityManager(194): 1.9% 194/system_server: 1.9% user + 0% kernel / faults: 1 minor 12-05 16:24:31.664: E/ActivityManager(194): 3.8% 229/InputDispatcher: 3.8% user + 0% kernel 12-05 16:24:31.664: E/ActivityManager(194): 3.8% TOTAL: 1.9% user + 1.9% kernel |
| | |
| | #4 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
|
Ich konnte das Problem nun lösen. Socket socket = new Socket(ip,port); Versucht pausenlos sich zu verbinden, wenn der andere Rechner nicht antwortet (z.B. wegen einer Firewall oder weil einfach nichts passiert) versucht die Methode es immer weiter. Die Lösung ist Folgendes: Code: ...
//echoSocket = new Socket(ipAdress, port);
echoSocket = new Socket();
echoSocket.connect(new InetSocketAddress(ipAdress, port), 2000);
... |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Kamera löst zu langsam aus | Oskar187 | Samsung Galaxy S (I9000) Forum | 13 | 28.10.2011 15:29 |
| DroidCam socket error:socket is not connected | germanytwo | Sonstige Apps & Widgets | 10 | 15.07.2011 18:08 |
| Kamera löst nicht aus! | ghost_chillt | Sony Ericsson Xperia X10 Forum | 1 | 30.01.2011 12:05 |
| SGS löst Diebstahlwarnanlage aus? | Marauder | Samsung Galaxy S (I9000) Forum | 8 | 09.09.2010 16:46 |
| Probleme beim Lesen aus Socket | Schause | Android App Entwicklung | 6 | 13.09.2009 22:21 |