从javascript客户端检索android websocket服务器的ip

时间:2014-12-13 22:29:38

标签: android websocket java-websocket

我写了一个app作为websocket服务器(使用TooTallNate库),以及一些充当websocket客户端的javascript。我设法从浏览器访问连接的Android设备的号码和联系人组,并可以通过在计算机上键入短信来写短信。问题是到目前为止我需要将Android设备的ip硬编码到客户端的javascript中。

这就是我将Web客户端连接到android服务器的方式。

var ws = new WebSocket("ws://192.xxx.x.xx:8080/");

我希望用户可以输入网络客户端的链接,然后连接到Android设备,而不知道它的IP。

如何以编程方式检索服务器的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。

1 个答案:

答案 0 :(得分:0)

那么,使用HTML和JS的http服务器在哪里?或者它只是您计算机上的HTML页面?

  • 如果它在您的Android手机上,您可以使用window.location获取服务器的IP并输入new WebSocket();功能
  • 如果它在另一台服务器上,您可以在该服务器上编写一些应用程序,以便从您的Android应用程序接收报告以存储IP,然后将其放入您的JS。您可以在计算机上使用一些Apache和Java应用程序实现它