Потеря соединения TCP
- PaXXaN
- beginner
- Сообщения: 32
- Зарегистрирован: 19 янв 2008, 10:11
- Версия LabVIEW: 8.5
- Контактная информация:
Потеря соединения TCP
Доброе время суток!
Подскажите, при открытом сокете (через TCP Open Connection) и отсутствии входных данных как можно определить, что устройство на том конце отключилось?
Подскажите, при открытом сокете (через TCP Open Connection) и отсутствии входных данных как можно определить, что устройство на том конце отключилось?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Потеря соединения TCP
А может быть пингом, я думаю должно получится.
Примерно вот так (замени конечно localhost на адрес IP)
Примерно вот так (замени конечно localhost на адрес IP)
- Вложения
-
- Ping.PNG (1.43 КБ) 7558 просмотров
- PaXXaN
- beginner
- Сообщения: 32
- Зарегистрирован: 19 янв 2008, 10:11
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Потеря соединения TCP
Попробывал - вылазит окно дополнительное(что не желательно), и нужно же ещё анализировать возвращаемые ответы на +/-?eg писал(а):А может быть пингом, я думаю должно получится.
Примерно вот так (замени конечно localhost на адрес IP)
Хотелось бы всё осуществлять внутри программы...
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Потеря соединения TCP
Всплывающее окно можно убрать, а ответ само собой надо проверять.
Другая возможность была бы, если бы устройство на другом конце имело сервер. То есть принимало все поступающие соединения. Тогда для проверки можно закрывать и открывать соединение и если при открытии возникала ошибка, значит устройство отсутствует.
Но пинг более универсален, так что советую всё таки воспользоваться пингом.
Другая возможность была бы, если бы устройство на другом конце имело сервер. То есть принимало все поступающие соединения. Тогда для проверки можно закрывать и открывать соединение и если при открытии возникала ошибка, значит устройство отсутствует.
Но пинг более универсален, так что советую всё таки воспользоваться пингом.
- PaXXaN
- beginner
- Сообщения: 32
- Зарегистрирован: 19 янв 2008, 10:11
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Потеря соединения TCP
А вот это отличная идея! Сервер как раз там имеется...eg писал(а):Всплывающее окно можно убрать, а ответ само собой надо проверять.
Другая возможность была бы, если бы устройство на другом конце имело сервер. То есть принимало все поступающие соединения. Тогда для проверки можно закрывать и открывать соединение и если при открытии возникала ошибка, значит устройство отсутствует.
Но пинг более универсален, так что советую всё таки воспользоваться пингом.
Получается, можно по 1 сокету общаться, а по второму (событие тайм аут задействовать) - закрывать и открывать соединение. Если всё в норме - значит устройство ещё на проводе. А вот время, через которое это следует проделывать, насколько маленьким может быть? У меня щас стоит 50 мс. Нормальное?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Потеря соединения TCP
Минимальное время зависит от многих факторов, поэтому лучше использовать метод тыка. Но нельзя так же забывать о разной скорости передачи данных. Если установить слишком маленькое время, то когда нибудь может оказаться, что прога в одной сети будет работать, а в другой (более медленной) не будет.
- PaXXaN
- beginner
- Сообщения: 32
- Зарегистрирован: 19 янв 2008, 10:11
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Потеря соединения TCP
да уж... ставлю 10с - и то вылетает ошибка ожидания.
А эту проверку лучше где разместить: в тайм ауте или какомнть параллельном потоке?
А эту проверку лучше где разместить: в тайм ауте или какомнть параллельном потоке?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Потеря соединения TCP
Чтобы ответить мне нужно знать для чего это всё, если прибор не посылает данные, то видимо ты хочешь посылать данные? Или просто хочешь знать есть прибор в сети или его нет?
Если ты всё же посылаешь прибору какие то данные, то ведь при отсылке данных тоже есть таймаут.
Если ты всё же посылаешь прибору какие то данные, то ведь при отсылке данных тоже есть таймаут.
- PaXXaN
- beginner
- Сообщения: 32
- Зарегистрирован: 19 янв 2008, 10:11
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Потеря соединения TCP
Это всё тот же EM-1000. Я туда загружаю пачку команд. Она начинает выполняться и по мере выполнения, на ПК должны отсылаться пакеты результатов работы. На ПК они разбираются и в соответствии с полученными данными или продолжается ожидание (предварительно изменив счетчики и отобразив принятие предыдущего ответа), или же завершается ожидание и проделываются финальные операции.eg писал(а):Чтобы ответить мне нужно знать для чего это всё, если прибор не посылает данные, то видимо ты хочешь посылать данные? Или просто хочешь знать есть прибор в сети или его нет?
Если ты всё же посылаешь прибору какие то данные, то ведь при отсылке данных тоже есть таймаут.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Потеря соединения TCP
Хм, а ты не можешь отсылать одну команду, дождаться выполнения и ответа, а потом отсылать следующую. Тогда ты всегда будешь в курсе выполнения и не будешь парится по поводу присутствия прибора в сети.
- PaXXaN
- beginner
- Сообщения: 32
- Зарегистрирован: 19 янв 2008, 10:11
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Потеря соединения TCP
Я не против, но руководителю проекта хочется, чтобы железка была "умной" и к тому же если их будет работать параллельно несколько штук, то существенно возрастёт нагрузка, да и ограничение на кол-во открытых соединений имеетсяeg писал(а):Хм, а ты не можешь отсылать одну команду, дождаться выполнения и ответа, а потом отсылать следующую. Тогда ты всегда будешь в курсе выполнения и не будешь парится по поводу присутствия прибора в сети.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 38 Ответы
- 13314 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 3 Ответы
- 1794 Просмотры
-
Последнее сообщение FredP
-
- 5 Ответы
- 253 Просмотры
-
Последнее сообщение IvanLis