Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Реконнект VPN и перезапуск служб в C# и CMD

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Wolfstail

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую всех!
 
Столкнулся с, необъяснимой для меня, проблемой, может кто-нибудь сможет растолковать причину?
 
Предыстория:
Дома 2 компа, в первый (основной) приходит интернет от провайдера и он раздает его на wi-fi точку доступа и второй комп. На основном стоит Win 8 и на нем наблюдается проблема отсутствия реконнекта VPN при обрыве связи и он не хочет сразу раздавать интернет, пока не перезагрузишь службу "SharedAccess".
Для решения проблемы в начале создал bat-файл в котором выполняются 3 простых действия: подключение VPN и остановка / запуск службы "SharedAccess".
 
Текст файла:

Код:
rasdial VpnName UserName Password
echo net stop SharedAccess && net start SharedAccess

 
Работает все отлично, VPN подключается и интернет сразу начинает раздаваться. Проблема в том, что его можно засунуть максимум в автозагрузку, что бы при загрузке интернет подключался, либо использовать при обрыве связи (вручную запустить).
Следующим шагом решил создать приложение которое постоянно, с неким промежутком, пингует 8.8.8.8 и, при длительном отсутствии ответа, реконнектит VPN и перезапускает службы, в общем делает то же самое что и bat-файл.
 
Часть текста, который за это у меня отвечает:

Код:
System.Diagnostics.Process.Start("rasdial.exe", "VpnName /d"); // Отключаем VPN, на случай если он просто подвис.
System.Diagnostics.Process.Start("rasdial.exe", "VpnName UserName Password"); // Подключаем VPN
 
// Создаем отдельный поток в котором будет перезапускаться служба расшаривания интерната
Thread serviceRestart = new Thread(new ThreadStart(delegate
{
                    ServiceController service = new ServiceController("SharedAccess"); // Инициализируем экземпляр ServiceController и связываем его со службой расшаривания интернет (SharedAccess)
                    // Пробуем остановить службу
                    try
                    {
                        service.Stop(); // Останавливаем службу
                        service.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 1, 0)); // Ждем в течении 1 минуты переход службы в остановленное состояние
                    }
                    // Если не получилось пишем ошибка в лог файл
                    catch (Exception ex)
                    {
                        System.IO.File.AppendAllText(@"BTReconnect_log.txt", "Остановка службы неудалась, ошибка: " + ex.Message + ". Время: " + DateTime.Now + "\n"); // Пишем текст ошибки в файл
                    }
                    finally
                    {
                        // Пробуем запустить службу
                        try
                        {
                            service.Start(); // Запускаем службу
                            service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 1, 0)); // Ждем в течении 1 минуты переход службы в запущенное состояние
                        }
                        // Если что-то не получилось пишем ошибка в лог файл
                        catch (Exception ex)
                        {
                            System.IO.File.AppendAllText(@"BTReconnect_log.txt", "Запуск службы неудался, ошибка: " + ex.Message + ". Время: " + DateTime.Now + "\n"); // Пишем текст ошибки в файл
                        }
                        finally
                        {
                            // Если служба работает, пишем в лог состояние после перезапуска VPN соединения и попытки перезапуска службы
                            if (service.Status == ServiceControllerStatus.Running)
                                System.IO.File.AppendAllText(@"BTReconnect_log.txt", "Служба запущена. Время: " + DateTime.Now + "\n");
 
                            System.IO.File.AppendAllText(@"BTReconnect_log.txt", "===> *************** <===\n\n"); // Дописываем в файл разделить
                        }
                    }
                }));
 
                serviceRestart.Start(); // Запускаем поток

 
Суть проблемы в следующем:
Созданное приложение, вроде как, функционирует, т.е. пингует адрес 8.8.8.8 , при разрыве соединения реконнектит интернет и перезапускает службы, но есть большое НО:
Интернет на основном компьютере начинает работать с большими задержками, тот же адрес (8.8.8.8) пингуется через раз и нет раздачи инета на второй комп и точку доступа.
 
Помогите понять, где косяк в приложении?
 
P.S. Работающий батник тоже пытался запускать через приложение, результат тот же, сеть работает с перебоями и нет раздачи интернета.
 
При необходимости могу выложить весь проект.

Всего записей: 3 | Зарегистр. 20-04-2012 | Отправлено: 10:36 28-03-2013
Laci

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может поможет, спроси автора..
hxxp://www.softez.pp.ua/2011/09/21/%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-%D0%BF%D0%B5%D1%80%D0%B5%D0%B7/

Всего записей: 760 | Зарегистр. 01-06-2002 | Отправлено: 16:46 25-08-2013
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Там тривиальный
 
TForm1_Button2Click()
{
    WinExec("cmd /u /c rasdial /d");
    Sleep(2000);
    ShellExecute(0, "open", "rasdial.exe", szParameters, 0, 0);
}
 
в 1.5 мегабайтном exe лежит.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 18:58 25-08-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Реконнект VPN и перезапуск служб в C# и CMD


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru