2014-12-11 4 views
4

Я написал службу Windows на Java и запускается автоматически (перед входом пользователя в Windows). Моя проблема заключается в том, что, похоже, у службы нет доступа к сети перед входом в систему.доступ к сети для доступа к сети перед входом в систему

В журналах я вижу, что перед входом в систему я получаю: java.net.UnknownHostException. Тем не менее, тот же код отлично работает после входа в систему.

Я попытался определить услугу как «услугу сети», это не помогло.

Может ли кто-нибудь помочь?

КСТАТИ:

  1. Там нет WiFi участвует

  2. Я смотрел, как работает программа TeamViewer, и я увидел, что у них есть некоторые значения реестра в FirewallPolicy. и они определили их обслуживание как локальную систему. Что заставило меня подумать, может быть, оно имеет какое-то отношение к настройкам брандмауэра, однако я не могу найти что-либо в Интернете об этом.

ответ

2

Мне просто удалось это решить. Проблема заключалась в том, что служба началась до того, как был доступ в Интернет. Имейте в виду, что сеть может быть доступна, но в Интернете нет.

Я решил ее делать: (псевдокод)

while (false) { 
    check if http://www.example.com is accesible: 
     if true - break 
     if false - sleep for 3 seconds 
} 
... (rest of the code) 
0

Если исключение один получает является UnknownHostException, это будет означать, что как-то разрешение DNS не удалось ..

Заметим далее, что разрешение DNS само зависит по IP. Следовательно, если машина, о которой идет речь, медленно подключается к соответствующему шлюзу (маршрутизатору), тогда разрешение DNS не имеет шансов на успех.

Следовательно, хотя вы можете попытаться разрешить разрешение хоста в цикле со сном (как было предложено Kuf). Я предлагаю попытаться зарегистрировать, как скоро машина получит IP-адрес после перезагрузки (a знак того, как скоро он подключится к сети), а затем оттуда (возможно, дополнительный вопрос SuperUser или ServerFault).

Смежные вопросы