2017-10-13 84 views
0

我正在使用客戶端服務器體系結構。我需要將我的本地IP地址發送到服務器。Socket編程android

我通過下面使用此代碼完成它:

Socket soc = new Socket(ipaddress,port) 

但問題是,我的本地IP地址,並與上面的代碼中獲得的地址是不同的。

如何解決這個難點? 請幫忙。 預先感謝

+0

你的問題就沒有意義了。 '新的Socket(...)'沒有獲得IP地址,它會創建一個出站連接。無論如何,你需要發送它爲什麼?只要客戶端連接,服務器就可以從接受的套接字中獲取它。 – EJP

回答

0
Socket mSocket = new Socket(hostAddress, port) 

hostAddress是服務器地址(遠程主機地址)。 端口是執行IO操作的端口號。

您可以手動發送地址到服務器: -

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'不能爲空。你假設對等使用'readUTF()'。 – EJP