Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
08.02.2012, 23:15     Автоматическое подключение к серверу после разрыва
  #1
Собственно, сабж. Пока ползал по форуму, пофиксил некоторые недочёты, но проблема осталась нершённой.
Код Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
:: запуск клиента
start vlc.exe http://192.168.1.14:8000/All
 
:: начало костыля
set /a flag = 0
 
:reload
ping 192.168.1.14
 
:: если пинга нет, то закрытие всех клиентов и начало отсчёта заново
if errorlelel 1 (taskkill /F /IM vlc.exe & set /a flag = 0)
 
:: для того, чтобы лишние клиенты не запускались
set /a flag = flag + 1
 
:: чтобы дальше не лезло, если 1 раз пингануло
if %flag% == 1 (goto reload)
 
:: если пингануло дважды, то выражение, что выше в скобках, уже выполняться не будет
:: и по идее flag >= 2
:: А flag == 2 лишь один раз, ближайший поле восстановления соединения с сервером
:: (пока связь не восстановлена flag == 0 или flag == 1
if %flag% == 2 (start vlc.exe http://192.168.1.14:8000/All)
 
:: чтобы буфер не переполнялся
if %flag% == 10 (set /a flag = 3)
 
goto reload
Ну был ещё вариант вместо
ping 192.168.1.14
if errorlelel 1 (taskkill /F /IM vlc.exe & set /a flag = 0)


использовать
ping 78.155.218.207 | find "100%%" && (taskkill /F /IM vlc.exe & set /a flag = 0)

но тоже безрезультатно. Что исправить?
AdAgent
Объявления
08.02.2012, 23:15
gimntut
Форумчанин
786 / 155 / 10
Регистрация: 18.07.2011
Сообщений: 230
10.02.2012, 07:44
  #2
Цитата Сообщение от nivs Посмотреть сообщение
но проблема осталась нершённой
Проблема не описана
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
10.02.2012, 23:21  [ТС]
  #3
Необходимо заново запускать программу при восстановлении соединения с сервером.
gimntut
Форумчанин
786 / 155 / 10
Регистрация: 18.07.2011
Сообщений: 230
11.02.2012, 07:47
  #4
Убери пробелы с обеих сторон от знака равно.
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
11.02.2012, 15:43  [ТС]
  #5
Та же фигня
gimntut
Форумчанин
786 / 155 / 10
Регистрация: 18.07.2011
Сообщений: 230
11.02.2012, 20:08
  #6
Грубых ошибок не видно.
Сделай лог работы программы и выложи его сюда в виде файла. Посмотрим.
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
11.02.2012, 22:56  [ТС]
  #7
Я не уверен,что всё верно сделал
Батник - http://pastebin.com/nReDMV76
А это наверно то, что надо вам - http://pastebin.com/8MSSmdQQ
gimntut
Форумчанин
786 / 155 / 10
Регистрация: 18.07.2011
Сообщений: 230
11.02.2012, 23:16
  #8
Цитата Сообщение от nivs Посмотреть сообщение
Я не уверен,что всё верно сделал
Сделано на отлично.

По полученным логам не видно, чтобы связь прерывалась.
Сможешь повторить, но с разрывом и восстановлением интернет-канала?
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@REM Пример самологирующегося батника
@if not '%SelfLogFile%'=='' goto :Execute
set SelfLogFile="%~0.log"
echo. >>%SelfLogFile%
echo ----- %DATE% %TIME% ----- >>%SelfLogFile%
prompt $S$SПапка:$S$P$_$S$SВремя:$S$T$_Команда:$S
call "%~0" %* 1>>%SelfLogFile% 2>>&1
exit
 
:Execute
 
start vlc.exe [url]http://neksia.ru:8000/All[/url]
set flag=0
:RELOAD
ping 78.155.218.207 | find "100%%" && call :KillVLC
set /a flag=flag+1
IF %flag%==1 goto RELOAD
IF %flag%==2 start vlc.exe [url]http://neksia.ru:8000/All[/url]
IF %flag%==10 set flag=3
echo %flag%
goto RELOAD
 
:KillVLC
taskkill /F /IM vlc.exe 
set flag=0
exit /b
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
12.02.2012, 04:04  [ТС]
  #9
Чудеса - работает, и так, как мне надо!
http://pastebin.com/9CEtMRM5

Вот готовый батник:
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
set /a flag = 0
сhcp 1251
 
:RELOAD
 
ping 78.155.218.207 | find "100%%" && call :KillVLC
set /a flag = flag + 1
 
IF %flag% == 1  goto RELOAD
IF %flag% == 2  start vlc.exe [url]http://neksia.ru:8000/Сплин[/url]
IF %flag% == 10 set flag=3
 
goto RELOAD
 
 
:KillVLC
 
taskkill /F /IM vlc.exe 
set flag = 0
exit /b
Если есть ошибки в оптимизации - исправте, я проблем, кроме теоретического переполнения flag, не вижу. Или всё хорошо?


Сделал запуск в фоне через *.vbs:
Код Code
1
2
3
4
Dim Shell
Set Shell = CreateObject("WScript.Shell")
Shell.run "radio.bat",0,1
Set Shell = Nothing
Работает так, как мне надо.
Последний вопрос - как вынести IP хоста и путь к потоку в отдельные переменные?
set host = 78.155.218.207 и подстановка %host% в нужное место (замену пути к потоку делал так же) работает некорректно - строки в командной строке перемещаются со страшной скоростью, VLC ничего не проигрывает... Поиграл с синтаксисом и ключами - не помогло.
gimntut
Форумчанин
786 / 155 / 10
Регистрация: 18.07.2011
Сообщений: 230
12.02.2012, 09:47
  #10
Цитата Сообщение от nivs Посмотреть сообщение
Или всё хорошо?
И так сойдёт.
Цитата Сообщение от nivs Посмотреть сообщение
set host = 78.155.218.207 и подстановка %host% в нужное место (замену пути к потоку делал так же) работает некорректно
Показывай, как делал.
Цитата Сообщение от nivs Посмотреть сообщение
строки в командной строке перемещаются со страшной скоростью
Их можно остановить с помощью клавиши Pause.
Цитата Сообщение от nivs Посмотреть сообщение
Поиграл с синтаксисом и ключами - не помогло
Показывай свой синтаксис и лог к нему.

СОВЕТ
Не ставь пробелы вокруг знаков равно в IF и SET. Это одна из причин трудноуловимых ошибок.
nivs
Форумчанин
3 / 3 / 0
Регистрация: 21.10.2011
Сообщений: 50
12.02.2012, 12:09  [ТС]     Автоматическое подключение к серверу после разрыва
  #11
Всё, отбой, вылечилось. Странно, но с пробелами вокруг "=" и "==" не работает, а без них - работает.
Без пробелов:
скрипт - http://pastebin.com/WPYGiRH9
лог - http://pastebin.com/6QXmDtEJ

С пробелами:
скрипт - http://pastebin.com/DV2mnhmi
лог - http://pastebin.com/8HDDaFSe

В общем, вот рабочий код:
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
chcp 1251
set host=78.155.218.207
set stream=http://neksia.ru:8000/Сплин
set /a flag=0
 
:RELOAD
 
ping %host% | find "100%%" && call :KillVLC
set /a flag=flag+1
 
IF %flag%==1  goto  RELOAD
IF %flag%==2  start vlc.exe %stream%
IF %flag%==10 set   flag=3
 
goto RELOAD
 
 
:KillVLC
 
taskkill /F /IM vlc.exe 
set flag=0
exit /b
Большое спасибо за помощь!
Yandex
Объявления
12.02.2012, 12:09
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Ответов Автор Дата
BAT Подключение telnet
Просто надо подключится к случайному серверу. Вопрос - любой ли сервер подойдёт для этого, и нужно ли согласие? Любой ли порт использовать, или както надо узнать какой именно?
Batch (CMD/BAT) 1 svk2140 27.07.2013 14:01
BAT Автоматическое определение USB диска и запись содержимых фотографий в указанную папку
Помогите друзья, Нужно автоматизировать запись данных с флеш накопителей в указанный каталог C:\Temp\папка с текущей датой Чтобы при вставке съемного накопителя бат файл сам находил на какой порт...
Batch (CMD/BAT) 1 acid-adder 05.07.2013 10:24
BAT Автоматическое копирование резервных файлов с нескольких серверов
Настраиваю автоматическое копирование резервных файлов с нескольких серверов. Вот файл батника целиком, на всякий случай @Echo Off :: Соединение с сервером Set $Host=хх.хх.хх.хх Set $User= Set...
Batch (CMD/BAT) 8 Fatal-Error 12.06.2013 14:46
BAT mstsc.exe - автоматическое подключение к удаленному рабочему столу
не могли бы вы подробно описать алгоритм подключения к удаленному рабочему столу, используя стандартное приложение в windows. Заранее спасибо. Добавлено через 2 часа 40 минут если возможно,...
Batch (CMD/BAT) 10 Sid1057 29.03.2013 17:32
BAT Рабочий метод разрыва конкретного активного соединения из командной строки Windows7
Рабочий метод разрыва конкретного активного соединения из командной строки Windows7. Как это сделать? Спасибо.
Batch (CMD/BAT) 3 Maxsss 21.02.2013 16:26
BAT Автоматическое изменение даты и времени создания заданного файла или группы файлов на текущую дату и время
Помогите пожалуйста с программой! Вот задание : Автоматическое изменение даты и времени создания заданного файла или группы файлов на текущую дату и время. Спецификации файлов вводить с...
Batch (CMD/BAT) 0 inviman 04.12.2012 21:58
BAT Подключение к интернету (rasdial), переподключение в случае разрыва.
Здравствуйте. Подскажите пожалуйста как добавить в этот .bat файл возможность подключатся к сети интернет (rasdial) при запуске, а также переподключать интернет в случае отсутствия пинга (ошибка -...
Batch (CMD/BAT) 0 Vika86 03.04.2012 16:29
BAT Скрипт для разрыва Интернет-соединения по условию
Здравствуйте! Помогите, плиз, в реализации следующей задумки. Нужен скрипт, который бы мониторил интернет-соединение и подсчитывал общее количество пропущенных данных, а в случае, если это...
Batch (CMD/BAT) 2 hrybansan 25.07.2010 03:21
Опции темы

Текущее время: 21:44. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.