Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > СОМ-порт


Автор: zss 27.5.2009, 21:04
я слушаю Открываю СОМ-порт у слушаю его. Если приходят данные, то я считаю, что на другой стороне 
появился клиент и передает данные. Но если он отключится и потом опять подключиться, то я это никак отловить не могу.

Можно ли как открыв порт не ожидать данные, а как-нибудь ждать подключения с другой стороны и потом только читать их.
Соответственно и отлавливать отключение клиента как и для сокетов.

Можно ли это вообще сделать ?

Автор: xvr 28.5.2009, 14:07
Цитата(zss @ 27.5.2009,  21:04)
я слушаю Открываю СОМ-порт у слушаю его. Если приходят данные, то я считаю, что на другой стороне 
появился клиент и передает данные. Но если он отключится и потом опять подключиться, то я это никак отловить не могу.

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

Можно ли как открыв порт не ожидать данные, а как-нибудь ждать подключения с другой стороны и потом только читать их.
'Подключение с другой стороны' без отправки данных 'с другой стороны' не бывает. COM порт даже не в состоянии определить воткнута в него вилка или нет, не говоря уже о клиентах 'с другой стороны'
Цитата

Соответственно и отлавливать отключение клиента как и для сокетов.
COM порт это далеко не сокет  smile 
Цитата

Можно ли это вообще сделать ?
Нет. Факт наличия клиента с другой стороны можно определить ТОЛЬКО по данным, принятым от него (возможно в ответ на данные переданные ему)
Можно сделать heartbeat - периодически посылать клиенту какой нибудь пакет данных (пустой) и проверять, что от него пришел ответ. В эти данные можно включать серийный номер (для каждой стороны свой), что бы отловить ситуацию когда клиент успел помереть и вновь подсоединится между пакетами.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)