2

我编写了一个充当 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。

4

1 回答 1

0

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

  • 如果它在你的Android手机上,你可以window.location用来获取服务器的IP并投入new WebSocket();使用
  • 如果它在另一台服务器上,您可以在该服务器上编写一些应用程序来接收来自您的Android应用程序的报告以存储IP,然后将其放入您的JS。您可以使用一些 Apache 和 Java 应用程序在您的计算机上实现它
于 2015-07-08T12:05:14.833 回答