Потеря соединения TCP

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Потеря соединения TCP

Сообщение PaXXaN »

Доброе время суток!
Подскажите, при открытом сокете (через TCP Open Connection) и отсутствии входных данных как можно определить, что устройство на том конце отключилось?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Потеря соединения TCP

Сообщение Eugen Graf »

А может быть пингом, я думаю должно получится.

Примерно вот так (замени конечно localhost на адрес IP)
Вложения
Ping.PNG
Ping.PNG (1.43 КБ) 7541 просмотр
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Потеря соединения TCP

Сообщение PaXXaN »

eg писал(а):А может быть пингом, я думаю должно получится.

Примерно вот так (замени конечно localhost на адрес IP)
Попробывал - вылазит окно дополнительное(что не желательно), и нужно же ещё анализировать возвращаемые ответы на +/-?
Хотелось бы всё осуществлять внутри программы...
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Потеря соединения TCP

Сообщение Eugen Graf »

Всплывающее окно можно убрать, а ответ само собой надо проверять.
Другая возможность была бы, если бы устройство на другом конце имело сервер. То есть принимало все поступающие соединения. Тогда для проверки можно закрывать и открывать соединение и если при открытии возникала ошибка, значит устройство отсутствует.
Но пинг более универсален, так что советую всё таки воспользоваться пингом.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Потеря соединения TCP

Сообщение PaXXaN »

eg писал(а):Всплывающее окно можно убрать, а ответ само собой надо проверять.
Другая возможность была бы, если бы устройство на другом конце имело сервер. То есть принимало все поступающие соединения. Тогда для проверки можно закрывать и открывать соединение и если при открытии возникала ошибка, значит устройство отсутствует.
Но пинг более универсален, так что советую всё таки воспользоваться пингом.
А вот это отличная идея! Сервер как раз там имеется...
Получается, можно по 1 сокету общаться, а по второму (событие тайм аут задействовать) - закрывать и открывать соединение. Если всё в норме - значит устройство ещё на проводе. А вот время, через которое это следует проделывать, насколько маленьким может быть? У меня щас стоит 50 мс. Нормальное?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Потеря соединения TCP

Сообщение Eugen Graf »

Минимальное время зависит от многих факторов, поэтому лучше использовать метод тыка. Но нельзя так же забывать о разной скорости передачи данных. Если установить слишком маленькое время, то когда нибудь может оказаться, что прога в одной сети будет работать, а в другой (более медленной) не будет.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Потеря соединения TCP

Сообщение PaXXaN »

да уж... ставлю 10с - и то вылетает ошибка ожидания.

А эту проверку лучше где разместить: в тайм ауте или какомнть параллельном потоке?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Потеря соединения TCP

Сообщение Eugen Graf »

Чтобы ответить мне нужно знать для чего это всё, если прибор не посылает данные, то видимо ты хочешь посылать данные? Или просто хочешь знать есть прибор в сети или его нет?

Если ты всё же посылаешь прибору какие то данные, то ведь при отсылке данных тоже есть таймаут.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Потеря соединения TCP

Сообщение PaXXaN »

eg писал(а):Чтобы ответить мне нужно знать для чего это всё, если прибор не посылает данные, то видимо ты хочешь посылать данные? Или просто хочешь знать есть прибор в сети или его нет?

Если ты всё же посылаешь прибору какие то данные, то ведь при отсылке данных тоже есть таймаут.
Это всё тот же EM-1000. Я туда загружаю пачку команд. Она начинает выполняться и по мере выполнения, на ПК должны отсылаться пакеты результатов работы. На ПК они разбираются и в соответствии с полученными данными или продолжается ожидание (предварительно изменив счетчики и отобразив принятие предыдущего ответа), или же завершается ожидание и проделываются финальные операции.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Потеря соединения TCP

Сообщение Eugen Graf »

Хм, а ты не можешь отсылать одну команду, дождаться выполнения и ответа, а потом отсылать следующую. Тогда ты всегда будешь в курсе выполнения и не будешь парится по поводу присутствия прибора в сети.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Потеря соединения TCP

Сообщение PaXXaN »

eg писал(а):Хм, а ты не можешь отсылать одну команду, дождаться выполнения и ответа, а потом отсылать следующую. Тогда ты всегда будешь в курсе выполнения и не будешь парится по поводу присутствия прибора в сети.
Я не против, но руководителю проекта хочется, чтобы железка была "умной" и к тому же если их будет работать параллельно несколько штук, то существенно возрастёт нагрузка, да и ограничение на кол-во открытых соединений имеется
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»