![]() |
Реконнект VPN и перезапуск служб в C# и CMD
Приветствую всех!
Столкнулся с, необъяснимой для меня, проблемой, может кто-нибудь сможет растолковать причину? Предыстория: Дома 2 компа, в первый (основной) приходит интернет от провайдера и он раздает его на wi-fi точку доступа и второй комп. На основном стоит Win 8 и на нем наблюдается проблема отсутствия реконнекта VPN при обрыве связи и он не хочет сразу раздавать интернет, пока не перезагрузишь службу "SharedAccess". Для решения проблемы в начале создал bat-файл в котором выполняются 3 простых действия: подключение VPN и остановка / запуск службы "SharedAccess". Текст файла: Код:
rasdial VpnName UserName Password Следующим шагом решил создать приложение которое постоянно, с неким промежутком, пингует 8.8.8.8 и, при длительном отсутствии ответа, реконнектит VPN и перезапускает службы, в общем делает то же самое что и bat-файл. Часть текста, который за это у меня отвечает: Код:
System.Diagnostics.Process.Start("rasdial.exe", "VpnName /d"); // Отключаем VPN, на случай если он просто подвис. Созданное приложение, вроде как, функционирует, т.е. пингует адрес 8.8.8.8 , при разрыве соединения реконнектит интернет и перезапускает службы, но есть большое НО: Интернет на основном компьютере начинает работать с большими задержками, тот же адрес (8.8.8.8) пингуется через раз и нет раздачи инета на второй комп и точку доступа. Помогите понять, где косяк в приложении? P.S. Работающий батник тоже пытался запускать через приложение, результат тот же, сеть работает с перебоями и нет раздачи интернета. При необходимости могу выложить весь проект. |
Цитата:
Для теста могу предложить только убрать проверку по интервалу и запускать вручную, предварительно проверив состояние служб. |
Проверка есть.
На переподключение ВПН и перезапуск службы дается минута, проверено что за это время все успевает перезапуститься. Как только появляется первый ответ от пинга после перезапуска, все счетчики сбрасываются в ноль и перезапуск соединения и служб не происходит, до того момента пока снова не наберется "счетчик отсутствия ответов". |
Немного по логике.
Цитата:
Цитата:
Цитата:
|
В планировщик не затолкать, потому что в программе реализована еще и индикация состояния сети, батник этого не сделает.
Вот что еще вывел тестовым путем: если создать батник с таким текстом: Код:
@echo off А если этот файл сконвертировать в exe (использовал Advanced BAT to EXE Converter) и запустить, то происходит то же, что и с приложением созданным в C# - соединение переподключается, но сеть работает с задержками и нет раздачи интернет на второй компьютер. Поэтому появился следующий вопрос: Есть ли какие-нибудь ограничения в Windows вообще или только в Win 8 на запуск VPN соединений или перезагрузки служб приложением .exe? Или быть может нужны дополнительные аргументы для запуска? |
Еще апдейт информации! )
Тупит служба "SharedAccess", т.е. если ее отключить после реконнекта и не включать, то сеть работает стабильно, пинг ровный (но нет раздачи интернет на второй комп), а если включить, даже с помощью консоли, пинг начинает прерываться. Есть у кого-нибудь идеи почему так может быть и как с этим бороться? |
Цитата:
Вообще ситуация странная. Можно проверить еще вот что: SharedAccess зависит от нескольких служб, возможно какая то из них(например, диспетчер подключений удаленного доступа) при его рестарте не работает? Ну и совсем не в тему вопрос: А нельзя приобрести маршрутизатор простенький рублей за 900, дабы все проблемы исчезли? |
Доброе утро!
Согласен, ситуация совсем странная. Все необходимые для работы "SharedAccess" службы включены, да и не в них по идее дело, т.к. если через bat-файл все нормально работает. Простенький маршрутизатор не подходит, т.к. пока ни один маршрутизатор не давал такую же скорость передачи данных как по схеме от компьютера компьютеру через сетевую карту. А на дорогой пока денег жалко. + дело еще в том, что я только начал учить C# и хочется разобраться в проблеме, что бы в будущем не натыкаться на эти же грабли. |
VVolf, да проблема то в том, что твой код вполне корректен, если не считать того нюанса, что я указывал выше. Попробуй сделать так: практически после каждой строки пиши в текстовик лог действия. Прямо после каждой строки с пояснением. А когда будут косяки, проанализируй лог. Может быть какая либо операция по порядку не отрабатывает или еще что.
Можешь, если хочешь, весь проект сюда или еще куда выложить, я посмотрю. |
Вложений: 1
Лог есть, пишет все что происходит в файл. По файлу видно что все отрабатывает :-/
Проект во вложении, буду очень признателен если посмотришь. |
Время: 10:55. |
Время: 10:55.
© OSzone.net 2001-