我编写了一个充当 websocket 服务器的应用程序(使用 TooTallNate 库),以及一些充当 websocket 客户端的 javascript。我设法从浏览器访问连接的 android 设备的号码和联系人组,并且可以通过在计算机上键入它们来编写短信。问题是到目前为止我需要将android设备的ip硬编码到客户端的javascript中。
这就是我将 Web 客户端连接到 android 服务器的方式。
var ws = new WebSocket("ws://192.xxx.x.xx:8080/");
我希望用户可以输入网络客户端的链接,然后在不知道它的 ip 的情况下连接到 android 设备。
如何以编程方式检索服务器的 ip?
编辑:
到目前为止,对于 android 套接字服务器,我正在使用此方法返回的 ip
private String getIpAddress() {
String ip = "";
try {
Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface
.getNetworkInterfaces();
while (enumNetworkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = enumNetworkInterfaces
.nextElement();
Enumeration<InetAddress> enumInetAddress = networkInterface
.getInetAddresses();
while (enumInetAddress.hasMoreElements()) {
InetAddress inetAddress = enumInetAddress.nextElement();
if (inetAddress.isSiteLocalAddress()) {
return inetAddress.getHostAddress();
}
}
}
} catch (SocketException e) {
Log.e(TAG, e.getMessage(), e);
}
return ip;
}
后来我像这样启动服务器
final String host = getIpAddress();
final int port = 8080;
new Thread(new Runnable() {
@Override
public void run() {
SimpleServer server = new SimpleServer(MainActivity.this, new InetSocketAddress(host, port));
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
info.setText("I'm waiting here: "
+ port);
}
});
server.run();
}
}).start();
当我用 javascript 客户端打开浏览器时,我使用上面的 java 方法返回的相同 ip。