2017-10-13 85 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