- Forum-Beiträge: 33
31.08.2012, 01:21:34 via Website
31.08.2012 01:21:34 via Website
ich stehe vor folgendem Problem:
Ich habe mir eine TestApp aufgebaut, in der ich zwischen zwei Activitys switchen kann. Einer ServerActivity und einer ClientActivity.
Nun ist es so, dass ich erst einmal einen String versenden will. Ich habe es bereits geschafft einen String vom Client an den Server zu senden von Emu zu Emu und auch einen String von Emu zu meinem Note, sofern dieses im Wlan eingeloggt ist. Leider konnte ich ich es noch nicht testen, ob es auch zwischen zwei realen Geräten funktioniert.
Mein Problem ist nun aber, was ist, wenn ich mal nicht im Wlan eingeloggt bin, sondern über 3G oder Edge eine Verbindung herstelle?
Die WiFi IP vom Android kann ich mittlerweile so auslesen:
2 NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
3 if(mWifi.isConnected()){
4 WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
5 WifiInfo wifiInfo = wifiManager.getConnectionInfo();
6 int ipAddress = wifiInfo.getIpAddress();
7 String wifiIp = String.format("%d.%d.%d.%d",
8 (ipAddress & 0xff),
9 (ipAddress >> 8 & 0xff),
10 (ipAddress >> 16 & 0xff),
11 (ipAddress >> 24 & 0xff));
12
13 if(wifiIp.length() > 0){
14 return wifiIp;
15 }
16 }
Aber ich komme einfach nicht an die externe IP....
Ich hatte zu Anfang versucht, die IP folgendermaßen auszulesen:
2 try {
3 for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
4 NetworkInterface intf = en.nextElement();
5 for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
6 InetAddress inetAddress = enumIpAddr.nextElement();
7 if (!inetAddress.isLoopbackAddress()) {
8 String ip = Formatter.formatIpAddress(inetAddress.hashCode());
9 return ip;
10 }
11 }
12 }
13 } catch (SocketException ex) {
14 Log.e("ServerActivity", ex.toString());
15 }
16 return null;
17 }
Dort bekomme ich auch IRGENDEINE IP Adresse, nur nicht die richtige. Bin ich im WLan drin, so bekomme ich anstatt der korrekten 192.168.2.107 eine 63.252.252.134. Und anstatt meiner externen ohne WLan (habe ich mit dem Browsern auf dem Android bei wieistmeineip.de nachgesehen) bekomme ich auch wieder eine vollkommen andere ausgegeben.
Also kann mit der Methode ja irgendwas nicht stimmen oder?
Wie könnte ich denn ohne Probleme an die externe IP vom Server kommen? Ausser nu im Browser zu gucken.... und kann ich dann auch über die externe IP des Servers die ich dann in der ClientActivity eingebe auf dem zweiten Gerät, dann einen String an den Server senden?
Ich bin ja schon froh, dass ich es hinbekomme habe einen String im lokalen Netzwerk zu verschicken. Ich hatte mal die externe IP über Edge vom Server in der ClientActivity auf dem Emu eingegeben, aber da bekomme ich dann keine Antwort. Kann es sein, dass es da schonmal an dem Emu liegt?
Wäre super wenn mir da jemand ein wenig helfen könnte.
Grüße