rse72 TCP команда -- это команда, которая может быть отправлена во время установленного TCP соединения.
Т.е. если прибор не на связи, сервер не может отправить TCP команду.
Инициатором соединения всегда является трекер. Сервер не может установить TCP соединение, только трекер (т.е. тут односторонняя связь). Сервер не может отправить TCP посылку, как смс по номеру телефона, т.к. не существует такого постоянного уникального "адреса трекера в интернете" (как, например, номер телефона в случае GSM адресации), чтобы установить соединение.
Таким образом, если вы выбираете тип команды TCP, это значит что выполнить её можно только тогда, когда трекер держит соединение и прошло не более 300 секунд с момента последней посылки (это либо сообщение с данными, либо какой то heartbeat пакет).
Если TCP соединение доступно, то сервер выполнит команду сразу же.
Виртуальный тип команды описан вами верно. Физически это таже TCP команда, но выполняется она не сразу, а только со следующей посылкой от трекера в момент получения этого сообщения. Вероятность доставки виртуальной команды выше, чем TCP, потому что сервер доподлинно на 100% не может понять, установлено сейчас TCP соединение или нет. Потому что если прибор не выслал спец. маркер о разрыве соединения возможна такая ситуация, что индикатор активного TCP соединения горит зеленым, но на самом деле команда не будет доставлена. В случае virtual команда отправляется в момент получения данных (следующего сообщения) и вероятность того что соединение установлено значительно выше.
По поводу "квитанции". Далеко не все трекеры присылают ответ на команду. Т.е. доставка команды это не значит её успешное выполнение. Кроме того, чтобы серверу понять, что команда выполнена безуспешно, надо чтобы не только трекер прислал ответ, но и сервер понял этот ответ. Но обычно ответ на команды от трекеров -- это текст, причем текст, генерируемый произвольно на выполнение команд (и ответ этот может разниться в зависимости от типа команды). Т.е. в протоколах трекеров не всегда прописано четкое описание посимвольного ответа на все команды. Разбирать этот ответ, чтобы ответ был понятен серверу в автоматическом режиме, очень сложно.
Viktor Yarovenko
Business Analyst
Wialon