| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Перезагрузка роутера |
| Автор: razumsap 11.1.2014, 09:05 | ||
| Добрый день. Написал небольшой код по перезагрузке роутера с помощью компонента IdTelnet. Роутер перезагружается, но после выполнения IdTelnet1.Disconnect происходит сообщение об ошибке.
Если сделать просто IdTelnet1.Connected, а затем IdTelnet1.Disconnect - ошибки никакой не происходит. Может что-то я не дописал, кто сталкивался, помогите. |
| Автор: Vas 11.1.2014, 09:39 | ||
Может просто сделать аналогичную проверку и для дисконнекта, да и обернуть это все в блок try
P.S. А если у роутера логин и пароль не admin admin, будете перекомпилировать проект? |
| Автор: razumsap 11.1.2014, 11:54 |
| да, я делаю для своего роутера, п.э. логин и пароль такие и оставлю. А вот по поводу кода что вы привели try .. except - сдесь можно отловить ошибку но не выводить её никуда, просто чтоб программа отработала и "корректно" завершила работу? |
| Автор: Vas 11.1.2014, 13:06 |
| Можно, оставьте блок except пустым |
| Автор: Poseidon 11.1.2014, 23:02 |
| Одному мне кажется, что при перезагрузке роутера дисконект происходит автоматически? |
| Автор: razumsap 13.1.2014, 08:54 |
| пробовал, после перезагрузки, проверка соединения показывала, что соединение оставалось, так что диссконнект необходим |
| Автор: Vas 13.1.2014, 15:46 |
| А почему тогда ошибка валится при дисконнекте? |
| Автор: Delvish 13.1.2014, 16:08 |
| Как только ты посылаешь команду роутеру на перезагрузку, тот уходит в перезагрузку и, соответственно, тут же обрывает все подключения и тушит все демоны (KILL и TERM какбэ). Так что у тебя связь со стороны роутера обрывается. Таким образом, команда на дисконнект тебе не нужна - дисконнект уже за тебя произведен роутером. Только что проверил - если хост разрывает соединение, то IdTelnet.Connected при проверке возвращает False и можно смело опять пытаться соединиться |
| Автор: razumsap 16.1.2014, 22:56 | ||
Странно конечно, я после кода перезагрузки, добавил такой вот код
и он не отработал, получается что соединение осталось. |
| Автор: kami 17.1.2014, 16:52 | ||
Варианта два: 1. Роутер начал процедуру перезагрузки, но еще не разорвал соединение (Ваш компьютер тоже не моментально выключается). 2. Соединение не закрывается, а грубо "рвется". В этом случает уведомления корреспондента не производится, узнать о том - живо соединение или нет, можно только попытавшись отправить в него что-нибудь. В этом случае, если соединение "мертво", будет ошибка с последующим дисконнектом. |
| Автор: razumsap 17.1.2014, 20:33 |
| Так и есть |