2017-10-13 3 views
0

Je travaille avec l'architecture du serveur client. Je dois envoyer mon adresse IP locale au serveur.Socket programmation android

J'assouvirai en utilisant ce code ci-dessous:

Socket soc = new Socket(ipaddress,port) 

Mais le problème est, mon adresse IP locale et l'adresse qui a obtenu avec le code ci-dessus sont différents.

Comment résoudre ce problème S'il vous plaît aider. Merci à l'avance

+0

Votre question n'a pas de sens. 'new Socket (...)' n'obtient pas d'adresse IP, il crée une connexion sortante. En tout cas vous devez l'envoyer pourquoi? Le serveur peut l'obtenir à partir du socket accepté, dès que votre client se connecte. – EJP

Répondre

0
Socket mSocket = new Socket(hostAddress, port) 

hostaddress est l'adresse du serveur (adresse de l'hôte distant). port est le numéro de port pour effectuer des opérations d'E/S.

vous pouvez envoyer l'adresse manuellement au serveur: -

try { 
      InetAddress addr = InetAddress.getByName("hostIpAddress"); 
      Socket mSocket = new Socket(addr,8080); 
      DataOutputStream dataOutputStream = new DataOutputStream(
        mSocket.getOutputStream()); 
      DataInputStream dataInputStream = new 
        DataInputStream(mSocket.getInputStream()); 
      dataOutputStream.writeUTF(getIpAddress()); 
      String sereverMesssage = dataInputStream.readUTF(); 
      if(sereverMesssage!=null && sereverMesssage.equals("Success")){ 
       Log.i("Socket","Local Ip Address received by server"); 
      } 

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

    private String getIpAddress() { 
     WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); 
     String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress()); 
     return ip; 
    } 
+0

'serverMessage' ne peut pas être nul. Vous supposez que le pair utilise 'readUTF()'. – EJP