Socket server auf Smartphone

Deltaforce

Mitglied
Hi, ich will eine verbindung zwischen PC und Android Smartphone via Sockets herstellen. Es funktioniert auch alles im Lokalen netzwerk, aber wenn ich es mit den "Richtigen" IPv4 adresse (außerhalb des lokalen netzwerkes) mache, geht es nicht. Im Wlan könnte man das Im Router einstellen, aber wie mache ich das im Mobilen netz? Wie kann ich den Port auf dem Smartphone forwarden? Oder gibt es da andere lösungen? Hier der code vom Server:

Code:
Java:
public void StartThread(){
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            while(true){
                try {
                    System.out.println("Starting Server");
                    server = new ServerSocket(8080);
                    System.out.println("Waiting for Connection");

                    s = server.accept();
                    System.out.println("Client connected");

                    while(true){
                        if(!s.isConnected()){
                            connected = false;
                            break;
                        }else{
                            connected = true;
                        }
                        if(!input.equals("null")) {
                            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

                            out.write(input);
                            out.newLine();
                            out.flush();
                            input = "null";
                        }else{
                            try{
                                Thread.sleep(50);
                            }catch (Exception e){System.out.println(e.toString());}
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    System.out.println(e.toString());
                }


            }
        }
    });
    t.start();
}
Wenn ich versuche mich mit dem Client zu verbinden geht es nicht, da er den host nicht findet.
LG Deltaforce
 
Zuletzt bearbeitet von einem Moderator:
Du brächtest Theoretisch einen Dienst, der die IP des Mobiles kennt. Und bei jeder Änderung entsprechend informiert wird.

Aber besser wäre es die konventionellen Methoden zu nutzen.
 
Äusseren IP-Adressen kannst du nachschauen mit "get my ip" Seiter oder so. Dann benötigst du ein festes Server so dass ein Smartfon die Änderungen über seine äussere IP da meldet und der andere Kommunikationsgerät von dem Server eine Meldung bekommt und die Verbindung wird wiederhergestellt. Eigentlich ist es kein Java Socket sondern Layer 3 Problem (in TCP sollte man diese einbauen).
 
Dachte es wäre klar

Der Push dienst, der via Framework von Apple und android und bestimmt auch für die sonstigen mobilen os enthalten ist, kann dazu genutzt werden, um dem mobilen Gerät zu sagen; Hey brauche eine bidirektionale Verbindung.

Der anfragende Host und alle Informationen könne via json übertragen werden.

Details hängen vom konkreten Problem ab. Aber in der mobilen Welt ist das das Mittel der Wahl.
 
Nah, der Ablauf wurde damit nicht beschriben))),
nur dass dieses in spezielle API's für Smartfone (kein Java Sockets) und realisiert durch OS und Unterstützung von Mobilnetz?
 
Zuletzt bearbeitet:
Bei konkreten Problemen kann man sicher ausarbeiten. Aber denke man muss dazu auch das notwendige Netzwerk grundlagenwissen haben und auch bereit sein sich damit auseinander zu setzen. Momentan sehe ich das nicht.
 

Zurück
Oben