以编程方式从android设备获取pc的IP地址

时间:2016-03-19 12:48:18

标签: android ip

我已将PC连接到路由器,而我的Android设备无线连接到同一台路由器。

我需要从我的应用程序访问在我的机器上运行的nodejs服务器。我需要在Android应用中检索机器的IP地址。

我试过这段代码

    WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
    String ip =  Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
    return ip;

ipconfig命令显示192.168.1.100,而在代码中它返回192.168.1.103 ....如何让它在我的应用程序中获取机器的IP地址?

3 个答案:

答案 0 :(得分:2)

任何应用程序将(1)允许用户手动键入其需要访问的服务器的主机名或IP地址,或者(2)主机名将硬编码到应用程序中。

由于您在自己的LAN上运行,因此主机名不会,因为没有DNS服务器可以解析它。

所以(1)对你来说是最简单的路线。当然,您可以存储IP,这样您就不必每次都输入它。

您的电脑需要有静态IP,而不是动态(DHCP)IP。您可以分配例如192.168.1.99,因为您的DHCP范围似乎从100开始。确保您还填写默认网关和至少一个DNS服务器。键入“ipconfig / all”(如果是Windows PC)以查找当前值。

如果您的代码不需要灵活,您甚至可以将IP 192.168.1.99硬编码到您的应用程序中,这样您就不需要输入它了。

(有一些方法可以扫描某个端口侦听的网络,但是编程并不容易,而且,如果网络上有多台机器运行nodejs服务器,你就没有线索了您的应用应该访问哪一个。)

答案 1 :(得分:1)

请参阅我的要点here

我将它用于我的旧项目。

答案 2 :(得分:1)

这对我来说有效

  dcomp <- function(y,mu,v,z=NULL, max=100)
    {
      if (is.null(z)){
      z=sum(sapply(  0:100, function(j) (( ((mu)^j) / (factorial(j)) )^v)  ))
      }
      log.ff <- v*y*log(mu)-v*lgamma(y) - log(z)
      return(exp(log.ff))
    }

    rcomp <- function(n, mu, v, max=100)
    {
      if (length(mu) == 1) {
        mu <- rep(mu, n)
      }
      if (length(v) == 1) {
        v <- rep(v, n)
      }
      u <- runif(n)
      y <- numeric(n)
      z=sum(sapply(  0:100, function(j) (( ((mu)^j) / (factorial(j)) )^v)  ))
      for (i in 1:n) {
        px <- dcomp(y[i], mu[i], v[i],z=z[i], max = max)
        while (px < u[i]) {
          y[i] <- y[i] + 1
          px <- px + dcomp(y[i], mu[i], v[i], z=z[i],max = max)
        }
      }
      return(y)
    }

请勿在清单

中授予 ACCESS_WIFI_STATE 和其他权限
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());