我已将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地址?
答案 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());