я написал приложение, которое действует как сервер веб-сокетов (с библиотекой TooTallNate), и некоторый javascript, который действует как клиент веб-сокета. Мне удалось получить доступ к номерам и группам контактов подключенного устройства Android из браузера, и я могу писать смс, набрав их на компьютере. проблема в том, что пока мне нужно жестко закодировать ip-адрес устройства Android в javascript клиента.
вот как я подключаю веб-клиент к серверу 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, я использую тот же IP-адрес, который был возвращен описанным выше методом java.
127.0.0.1
илиlocalhost
для обозначения компьютера, на котором вы сейчас работаете. - person jfriend00   schedule 14.12.2014SimpleServer
. Как это сервер поддерживает протоколWebSocket
? Похоже, вы зациклились на проблеме с IP-адресом, которая должна нормально работать с127.0.0.1
. Я думаю, что ваш сервер не использует протоколWebSocket
, что может привести к тому, что клиент не сможет подключиться. - person jfriend00   schedule 16.12.2014