Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перезагрузка роутера 
:(
    Опции темы
razumsap
Дата 11.1.2014, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Добрый день.
Написал небольшой код по перезагрузке роутера с помощью компонента IdTelnet.
Роутер перезагружается, но после выполнения IdTelnet1.Disconnect происходит сообщение об ошибке.

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  login,password,reboot: string;
  i:integer;
begin

    Login       :='admin';
    Password:='admin';
    reboot     :='reboot';

if not idtelnet1.Connected then begin
   idtelnet1.Connect;

   for i:=1 to length(login)    do idtelnet1.SendCh(login[i]);
       idtelnet1.SendCh(#13);
   for i:=1 to length(password) do idtelnet1.SendCh(password[i]);
       idtelnet1.SendCh(#13);
   for i:=1 to length(reboot)   do idtelnet1.SendCh(reboot[i]);
       idtelnet1.SendCh(#13);

       IdTelnet1.Disconnect;
   end;

end;


Если сделать просто IdTelnet1.Connected, а затем IdTelnet1.Disconnect - ошибки никакой не происходит.

Может что-то я не дописал, кто сталкивался, помогите.

PM MAIL ICQ   Вверх
Vas
Дата 11.1.2014, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: нет
Всего: 28



Может просто сделать аналогичную проверку и для дисконнекта, да и обернуть это все в блок try
Код

try
  if idtelnet1.Connected then  //если еще подцеплены, то дисконнект, иначе уже и так отвалились
     idtelnet1.Disconnect; 
except
  ShowMessage('Что-то пошло не так');
end;


P.S. А если у роутера логин и пароль не admin admin, будете перекомпилировать проект?

Это сообщение отредактировал(а) Vas - 11.1.2014, 09:40


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
razumsap
Дата 11.1.2014, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



да, я делаю для своего роутера, п.э. логин и пароль такие и оставлю. А вот по поводу кода что вы привели 

try .. except - сдесь можно отловить ошибку но не выводить её никуда, просто чтоб программа отработала и "корректно" завершила работу?
PM MAIL ICQ   Вверх
Vas
Дата 11.1.2014, 13:06 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: нет
Всего: 28



Можно, оставьте блок except пустым


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Poseidon
Дата 11.1.2014, 23:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 4
Всего: 133



Одному мне кажется, что при перезагрузке роутера дисконект происходит автоматически?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Vas
Дата 12.1.2014, 15:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: нет
Всего: 28



Цитата(Poseidon @  11.1.2014,  23:02 Найти цитируемый пост)
Одному мне кажется, что при перезагрузке роутера дисконект происходит автоматически? 

Аналогично,  потому в примере я и  добавил проверку на установленное соединение перед дисконнектом.


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
razumsap
Дата 13.1.2014, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



пробовал, после перезагрузки, проверка соединения показывала, что соединение оставалось, так что диссконнект необходим
PM MAIL ICQ   Вверх
Vas
Дата 13.1.2014, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: нет
Всего: 28



А почему тогда ошибка валится при дисконнекте?


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Delvish
Дата 13.1.2014, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


oO
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 13.12.2006

Репутация: нет
Всего: 4



Как только ты посылаешь команду роутеру на перезагрузку, тот уходит в перезагрузку и, соответственно, тут же обрывает все подключения и тушит все демоны (KILL и TERM какбэ). Так что у тебя связь со стороны роутера обрывается. Таким образом, команда на дисконнект тебе не нужна - дисконнект уже за тебя произведен роутером.
Только что проверил - если хост разрывает соединение, то IdTelnet.Connected при проверке возвращает False и можно смело опять пытаться соединиться
PM MAIL   Вверх
razumsap
Дата 16.1.2014, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Странно конечно, я после кода перезагрузки, добавил такой вот код 

Код

if idtelnet1.Connected = False then
   idtelnet1.Connect;


и он не отработал, получается что соединение осталось. 
PM MAIL ICQ   Вверх
kami
Дата 17.1.2014, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(razumsap @  16.1.2014,  22:56 Найти цитируемый пост)
Странно конечно, я после кода перезагрузки, добавил такой вот код 

Варианта два:
1. Роутер начал процедуру перезагрузки, но еще не разорвал соединение (Ваш компьютер тоже не моментально выключается).
2. Соединение не закрывается, а грубо "рвется". В этом случает уведомления корреспондента не производится, узнать о том - живо соединение или нет, можно только попытавшись отправить в него что-нибудь. В этом случае, если соединение "мертво", будет ошибка с последующим дисконнектом.

PM MAIL WWW   Вверх
razumsap
Дата 17.1.2014, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Цитата(kami @  17.1.2014,  16:52 Найти цитируемый пост)
будет ошибка с последующим дисконнектом.
 
Так и есть

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0797 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.