|
|
  |
Оффтоп по М2М серверам GPS мониторинга. |
|
|
|
Apr 18 2013, 20:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Добрый день. Я думаю, эта самая популярная ветка среди людей, которые работают в сфере GPS мониторинга. Хочу задать вопрос, можно ли у кого купить: 1) голый каркас для создания своего сервера М2М: надежный парсер TCP пакетов с сохранением всех параметров в быструю БД? 2) исходники с комментариями готового серверного ПО для GPS мониторинга? Нагуглил вот этих ребят, почти готовый продукт, но: 1) исходники для редактирования своего протокола обмена с сервером продавать не хотят, добавить пожалуйста, а изменять нельзя. 2) поддержка всевозмжных датчиков пока отсутсвует 3) смущает использование тормознутой MySQL database (видел как она за месяц ставит на колени сервер по обработке клиентов автомобильной стоянки по карточкам). С удовольствием заюзал бы Wialon, но для Беларуси у них почему-то ценовая политика сложилась в 3 раза дороже, чем для других регионов СНГ. Буду очень благодарен за какую-либо информацию. Спасибо.
Сообщение отредактировал Alt.F4 - Apr 18 2013, 20:12
|
|
|
|
|
Apr 19 2013, 02:18
|

Знающий
   
Группа: Свой
Сообщений: 926
Регистрация: 18-01-07
Пользователь №: 24 552

|
Цитата(Alt.F4 @ Apr 19 2013, 03:11)  Добрый день. Я думаю, эта самая популярная ветка среди людей, которые работают в сфере GPS мониторинга. Хочу задать вопрос, можно ли у кого купить: 1) голый каркас для создания своего сервера М2М: надежный парсер TCP пакетов с сохранением всех параметров в быструю БД? 2) исходники с комментариями готового серверного ПО для GPS мониторинга? Нагуглил вот этих ребят, почти готовый продукт, но: 1) исходники для редактирования своего протокола обмена с сервером продавать не хотят, добавить пожалуйста, а изменять нельзя. 2) поддержка всевозмжных датчиков пока отсутсвует 3) смущает использование тормознутой MySQL database (видел как она за месяц ставит на колени сервер по обработке клиентов автомобильной стоянки по карточкам). С удовольствием заюзал бы Wialon, но для Беларуси у них почему-то ценовая политика сложилась в 3 раза дороже, чем для других регионов СНГ. Буду очень благодарен за какую-либо информацию. Спасибо. На какое количество устройств сервер должен быть рассчитан?
|
|
|
|
|
Apr 19 2013, 08:02
|
Частый гость
 
Группа: Участник
Сообщений: 195
Регистрация: 16-02-12
Пользователь №: 70 299

|
Цитата Каждый сокет и особенно Апач отъедает ресурсы процессора и самое главное память. В это все и упираются. для этого есть erlang и другие серверы на базе легковесных процессов (на scala, clojure, nodejs)
|
|
|
|
|
Apr 19 2013, 13:36
|
Знающий
   
Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939

|
А что мешает создать свой TCP парсер и набивать базу данных? После чего демоном обрабатывать эти данные? Имхо это правильнее т.к. взаимозаменяемость ПО и возможностей последующего расширения гораздо больше. Цитата(GeGeL @ Apr 19 2013, 13:55)  Это в смысле HTTP от трекера на сервер? Т.е. трекер периодически устанавливает http-соединение и методом POST отправляет данные, я так понял? Чо только люди не придумают, чтобы жизнь себе усложнить
Сообщение отредактировал MKdemiurg - Apr 19 2013, 13:37
|
|
|
|
|
Apr 19 2013, 13:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата А что мешает создать свой TCP парсер и набивать базу данных? После чего демоном обрабатывать эти данные? Мешает отсутствие опыта. Если у Вас есть какие-либо наработки, готов приобрести исходники с комментариями.
|
|
|
|
|
Apr 19 2013, 14:08
|
Знающий
   
Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939

|
Цитата(Alt.F4 @ Apr 19 2013, 16:43)  Мешает отсутствие опыта. Если у Вас есть какие-либо наработки, готов приобрести исходники с комментариями. Да собственно там и нечего приобретать и опыта особо много не надо. Любая готовая либа с серверсокетными соединениями разве не катит? Я взял Qt-шную, переопределил ряд методов под свои задачи, вогнал по 100 соединений в поток и подключил нужные драйвера БД и парсер с собственным протоколом. Всё остальное делают отдельные демоны или вобще php скрипты. В качестве исходника использовал пример однопоточного неблокирующего сервера из тех же примеров для Qt. А там просто навернул...))) Исходники давать не вижу смысла так как там 60% копипаста с примеров и 40% свой протокол.
Сообщение отредактировал MKdemiurg - Apr 19 2013, 14:13
|
|
|
|
|
Apr 19 2013, 16:40
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Я уже как то писал, если кому скучно покажется - не пинайте сильно: может, кому и полезно будет. Даже дети уверены, что тсп надежнее удп, т.к. обеспечивает гарантийность доставки данных (так в учебниках пишут). Давайте выйдем из плоскости стандартного мышления и разберемся: каким способом тсп обеспечивает гарантийность доставки пакета. 15 минут чтения вики - и ответ: - принимающая сторона подтверждает полученное количество цельных (без пропусков) байт (поле ACK в TCP-пакете) - отправляющая сторона, не получив подтверждения, отсылает неподтвержденные данные повторно, с геометрически нарастающем интервалом времени (от 0.5 до 30 сек) - если исчерпан лимит повторов и подтверждения все нет (через 30 сек), то соединение разрывается.
Теперь построим такую модель: пусть каждые 10 сек у нас появляются данные, которые надо передать на сервер (например, координаты). - дописываем к ним номер пакета (ID) и запускаем демон отправки, отсылающий ежесекундно удп-пакет на сервер; - при получении пакета сервер подтверждает его, отсылая обратно его ID; - при получении подтверждения, если ИД совпадает, останавливаем демон; - если подтверждение не получено, а готовы новые данные, то заменяем ими старые и увеличиваем ИД на 1, перезапускаем демон.
Отличается ли надежность доставки данных в такой схеме от тсп? Абсолютно ничем.
Вы можете спросить: а зачем тогда придуман ТСП? Представьте, что описанным выше способом надо передать большой файл, разбив его на кусочки размером с пакет. Надо передать кусочек, дождаться поlтверждения, передать следующий и т.д. Т.е. время передачи будет равно пингу, умноженному на к-во кусочков. Это очень долго. Изюминка ТСП заключается в концепции окна: - получатель может подтверждать не каждый пакет, а группу пакетов сразу; - отправитель может отправлять некоторое к-во данных наперед, не дожидаясь подтверждения предыдущих.
Вопрос: в приложении жпс-трекинга нам это надо? У нас есть длинные файлы? Есть непрерывный поток данных? Нет. Есть небольшие структурированные по времени отдельные пакеты. И поэтому нет смысла тратить ресурс на совершенно бесполезные вещи.
Вы можете возразить: но данные все же могут потеряться, если следующие поступят раньше подтверждения? Да, так и есть. Но так же и в тсп. Хуже того, там мы рискуем потерять и следующие данные, пока будем перезапускать соединение.
Если система требует абсолютно гарантийной доставки отдельных данных (например, сработка сигнализации), есть несколько вариантов (причем не зависимо от того, используется тсп или удп): а) биты критических данных сделать в виде триггеров: устанавливать при сработке, передавать в каждом пакете, сбрасывать при первом подтверждении; б) кешировать неподтвержденные пакеты в файловую систему трекера (или ОЗУ), передавая вновь поступившие. При получении первого же подтверждения запускать параллельно демон отправки кешированных пакетов от последнего. Именно так сделано в моем проекте. Результат прекрасный: никаких стрел на треке даже при работе на суррогатную GSM-антенну при слабом покрытии.
Если все еще сомневаетесь, сделайте простой эксперимент: в прошивке трекера отправляйте каждые 10 сек пакет с инкементируемыми данными, а на сервере пишите в файл. Сначала через тсп (естественно, предусмотрите автопереподключение), потом через удп, как я описал выше. Через сутки сравните количество пропусков номеров в файлах на сервере. Очень удивитесь, но пропусков в удп-варианте будет меньше. Вот так то: если на заборе написано ***, то не всегда он там есть...
|
|
|
|
|
Apr 19 2013, 19:06
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Я, к сожалению, только на С/С++ умею  Все зависит от того, что у вас есть на сервере и как/с чем вы хотите связать ваш парсер. Сам парсер (хоть тсп, хоть удп) не проблема: пишете демон на С, в сети масса примеров по использованию сокетов в линукс. Это самый эффективный по производительности способ. Получаете данные, а вот как их передать вашему серверу - зависит скорее от самого сервера (на чем он написан). Можно попробовать прицепить с-исходник драйвера БД к парсеру: парсер пишет в БД, а сервер читает. Возможно, проще будет написать демон вместе с сервером: это и на php можно сделать, но вот производительность никакая будет.
|
|
|
|
|
Apr 20 2013, 06:28
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
 Яркий пример нашей системы образования... Вместо понятийного уровня, используя тесты типа "один ответ из 4-х верный", не заботясь о том, как потом знания интерпретируют и применят на практике... А потом удивляемся, почему ракеты падают на старте  NAT - он для того и существует, чтобы передавать обратный пакет клиенту, и это он обязан делать по определению. Посоветуйте источнику вашей информации почитать в вики о 4-х основных типах NAT и разобраться, в чем их отличие и как они работают. Затем, для закрепления материала, поиграть с любым STUN-сервером с помощью утилиты, наблюдая сетевым анализатором, что посылается, и какие ответы приходят и не приходят. Возможно, после этого его жизнь разделится на две половины  Естественно, ваш сервер должен иметь внешний IP или же, если он за роутером, то необходимо в роутере статически открыть используемый порт на LAN-IP машины с запущенным сервером. Обычно сервер располагают на VDS, и там внешний IP. Что касается GPRS-сисопов, то, как писал выше, их NAT ОБЯЗАН пробросить соединение от трекера к серверу и обратно, это его основная функция. Иначе это уже аварийная ситуация, и в равной мере это может быть как с удп, так и тсп. (если не в курсе: NAT совершенно одинаково работает с обоими протоколами, т.к. он работает на IP-уровне, но почему-то никто не помнит, что он точно так же открывает и поддерживает TCP-соединение, применяя адрес-трансляцию и порт-маппинг к TCP-IP-заголовкам).
|
|
|
|
|
Apr 20 2013, 08:25
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Alt.F4 @ Apr 19 2013, 07:14)  sobr, вообще хотелось бы себя чувствовать по-свободнее, т.е без ограничений по количеству объектов. А так, я думаю, 10тыс - это максимум, чего можно вообще достичь. Ограничение на количество открытых сокетов накладывает операционка и платформа. Под настольный ПК с Windows реальная цифра будет 1-3 тыс. сокетов, не более. И при этом будет большой риск отказов. Т.е. вопрос надежного M2M сервера это вопрос аппаратного обеспечения и его масштабирования. С некоторого времени этот вопрос успешно решают облака. Т.е. не стоит заморачиваться со своим серверным железом, а доверить все сервисам Google. У них на одном доменном имени десятки серверов висят с взаимной синхронизацией.
|
|
|
|
|
Apr 20 2013, 08:36
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Alt.F4 @ Apr 20 2013, 11:29)  Облака - это VDS/VPS? Если имеется в виду этот VPS , то это те же грабли одиночной операционки. Я говорю про облачные сервисы. Сервисы пишете вы сами на основе предоставляемого API облачных сервисов. Сервисы и серверы это разные вещи.
|
|
|
|
|
Apr 20 2013, 09:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата Сервисы пишете вы сами на основе предоставляемого API облачных сервисов. Загуглил тему, но пока не понятен принцип работы. А какой из типов облачных сервисов Вы имеете ввиду. SaaS — Software as a Service (программное обеспечение в качестве сервиса). Предоставляет потребителю возможность использовать ПО, работающее в облаке. Ярчайший пример: gmail. PaaS — Platform as a Service (платформа в качестве сервиса). Позволяет потребителю развертывать собственные приложения на подготовленной для этого платформе. В качестве примера можно привести среду Java, работающую удаленно. IaaS — Infrastructure as a Service (инфраструктура в качестве сервиса). Дает потребителю целую инфраструктуру, позволяющую запускать виртуальные машины, налаживать межу ними связь и использовать дисковое пространство.
|
|
|
|
|
Apr 20 2013, 10:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата думаю можно обойтись и без облака Как пишут, облака позволяют ускорить сборку любого проекта, используя готовые API. Определение и назначение хорошее, но где это все лежит и как собирать, информации нет...
|
|
|
|
|
Apr 21 2013, 12:38
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата Это в смысле HTTP от трекера на сервер? Т.е. трекер периодически устанавливает http-соединение и методом POST отправляет данные, я так понял? Да, совершенно верно. Ничего тут сложного (как считают некоторые посетители форума) нет. HTTP + JSON это стандарт де факто для большинства существующих API, в том числе и высокопроизводительных. Кстати, опыт разработки на Эрланге у меня есть. Это совершенно великолепный язык, позволяющий вашу задачу решить в порядка 100 строк. Но у него своя совершенно особая философия, требующая глубокого погружения. И для него практически однозначно нужен линукс - под виндой глючит. Да, для справки, программисты на Эрланге ненавидят node.js (это к sobr'у).
|
|
|
|
|
Apr 21 2013, 15:38
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Согласен, сложного ничего нет. Наоборот, все слишком просто. Но слишком неэффективно. Если посмотреть на диаграмму в статье по ссылке от sobr, то видим огромные пики нагрузки при массовом отключении клиентов. А Вы предлагаете делать это постоянно и часто. Конечно, может, я не прав, но код на Эрланге, или на node.js в любом случае обращается сисколом к ядру ОС, к тем же сокетам. И эти языки сделаны для упрощения разработки, облегчения переносимости и обслуживания кода как компромисс с эффективностью, но никак не для эффективности. В полном идеале для максимальной эффективности надо написать на ассемблере свой заточенный драйвер езернет-карты, свой стек, парсер и БД  Ясно, что это фантастика, но оптимизированный демон на С с минимумом сисколов будет всегда эффективнее любых высокоуровневых надстроек, несмотря на их новомодные названия. Но вот отточить его весьма непросто.
|
|
|
|
|
Apr 21 2013, 18:23
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Да топик стартеру эффективности большой не требуется - до 10000 клиентов, а отдавать данные можно раз в 10 минут, например. Нагрузка детская. Цитата Ясно, что это фантастика, но оптимизированный демон на С с минимумом сисколов будет всегда эффективнее любых высокоуровневых надстроек, несмотря на их новомодные названия. Но вот отточить его весьма непросто. Это конечно. Но вот сделать хороший сервер хоть TCP, хоть HTTP на C задача очень нетривиальная. Неопытный программист сделает в лоб по потоку на клиента и сразу же проиграет решению на эрланге. Тем не менее, я не советую топикстартеру браться за эрланг (хотя для самообразования очень даже советую), а порекомендую: 1. Поискать готовый сервис и присоседиться к нему. 2. Если не найдёт и решение нужно долгоиграющее и расширяемое, то взять веб сервер и прикрутить свой обработчик. Данные складировать сразу в БД картографического сервера. 3. Если совсем нет времени и хочется TCP, могу дать свой сервер на C#. Там по потоку на клиента, винда, бинарный протокол и прочая ересь, зато TCP сервер сразу заработает.
|
|
|
|
|
Apr 21 2013, 19:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата Поискать готовый сервис и присоседиться к нему. Этим как раз упорно и занимаюсь. Причем хочется купить сервис и поставить на свой физический сервер (ну или виртуальный). Одно не нравится, что потом ничего изменить нельзя будет, если потребуется. HTTP использовать категорически неприемлемо, данные отдаю каждые 3-9сек. А чтобы поднять систему с нуля и до вести до ума , потребуется как минимум полгода.
|
|
|
|
|
Apr 21 2013, 19:51
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата HTTP использовать категорически неприемлемо, данные отдаю каждые 3-9сек. Мне что-то так чудится, что Вы и без HTTP не сможете отдавать данные каждые 3-9 сек. Подумайте на досуге, что Ваши устройства будут делать в те моменты, когда связи не будет. Что-то мне подсказывает, что данные они должны накапливать, а передавать при появлении связи. Так что мешает и по HTTP аналогично работать: данные накапливать, а передавать блоками с заданным интервалом?
|
|
|
|
|
Apr 21 2013, 21:10
|
Знающий
   
Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177

|
QUOTE (Alt.F4 @ Apr 20 2013, 07:20)  Поступила информация, что используя UDP, от сервера можно и не дождаться потом ответа. Я не сильно разбираюсь, но объяснили, что не все роутеры (если клиент спрятан за NAT'ами) умеют передавать обратный пакет клиенту, там порты пробрасываются и все пакеты не доходят. Информация в общих чертах правильная, но в ней не упомянуты граничные условия ее применимости.  NAT у некоторых провайдеров скидывает UDP "сессию" через 4-5 секунд в периоды пиковой загрузки. И, кстати, не надо раскатывать губу на то,что TCP от этого спасет. Не спасает. Сносят малоактивные сессии на своих NAT провайдеры только так. Вообще тема эта занятная.  Можно сделать реализацию протокола, отточить, отполировать до блеска, гордиться за себя... И потом СИЛЬНО удивиться, получив первого клиента с симкой из какой то новой сетки. От первой работоспособной реализации до действительно беспроблемного продукта примерно тот же путь, какой бывает от студенческого курсового, сданного на "отлично" до серийно выпускаемого изделия на его базе.
|
|
|
|
|
Apr 21 2013, 21:53
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Да, такая беда есть, и тема действительно занятная. Но за 4-5 сек трекер получит подтверждение сервера, т.к. реально пинг гораздо меньше даже в жпрс. Т.е. в итоге будем иметь "мертвые периоды" между посылками трекера (если они реже 5 сек), в которые трекер будет не доступен с сервера. Но после каждого очередного пакета от трекера он будет доступен в течение этих 4-5 сек, и можно давать ему управляющие данные. И верно замечено, что TCP не спасает. Ведь NAT не отслеживает tcp-сессию по syn и fin (он бы замахался, да и проблемы зависших сессий сразу). Точно так же после очередного ip-tcp-пакета обновляется таймаут таблицы портмапинга. Просто tcp-сокет имеет встроенный таймер KeepAlive, гоняющий пустые пакеты при отсутствии обмена. Это и создает иллюзию, что в случае ТСП трекер доступен с сервера всегда, а в случае удп - не всегда. Да только если NAT удаляет запись портмапинга в удп, то первый же пакет от трекера создает ее вновь, и если исходящий порт другой, ничего страшного: сервер то отвечает по адресу отправителя. А вот если такое случится на тсп-сесии, то серверный сокет ну никак не примет пакет с другого порта, и реконект неизбежен. На самом деле ничто не мешает ввести keepalive таймер в удп-модель и получить в результате постоянную доступность трекера с сервера. И преимущества: - интервал keepalive будет настраиваемым (можно даже сделать умную адаптацию), в то время как в тсп он определяется настройками сокета (параметрами стека), недоступными в большинстве ОС. В итоге можно подобрать нужный интервал KeepAlive и экономить трафик, лишний раз не гоняя пустые пакеты. - "нулевой" удп-пакет короче, чем тсп (за счет заголовка, за который тоже, кстати, идет оплата), опять же экономия трафика. А что касается идеальных реализаций, то их просто не бывает: всегда что-нибудь вылезет рано или поздно. И чем пытаться создать идеальную реализацию, лучше обеспечить максимально оперативное устранение (типа апгрейда firmware и т.п.).
|
|
|
|
|
Apr 21 2013, 23:51
|
Знающий
   
Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177

|
QUOTE (GeGeL @ Apr 22 2013, 01:53)  А что касается идеальных реализаций, то их просто не бывает: всегда что-нибудь вылезет рано или поздно. И чем пытаться создать идеальную реализацию, лучше обеспечить максимально оперативное устранение (типа апгрейда firmware и т.п.). Согласен.  Каждый год что то, да вылезает. А насчет последнего предложения - это сильно осложняет жизнь при подходе "купил готовый компонент и забыл о нем".  С мечты о котором началась ветка, кстати.
|
|
|
|
|
Apr 22 2013, 00:11
|

Знающий
   
Группа: Свой
Сообщений: 926
Регистрация: 18-01-07
Пользователь №: 24 552

|
Цитата(andrewlekar @ Apr 21 2013, 19:38)  ...Да, для справки, программисты на Эрланге ненавидят node.js (это к sobr'у).  Программисты под 1С думаю тоже. Мне то зачем об этом знать? Цитата(andrewlekar @ Apr 21 2013, 19:38)  3. Если совсем нет времени и хочется TCP, могу дать свой сервер на C#. Там по потоку на клиента, винда, бинарный протокол и прочая ересь, зато TCP сервер сразу заработает. И что, обеспечит 10000 соединений? Дайте потестить.
|
|
|
|
|
Apr 22 2013, 05:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(Alt.F4 @ Apr 20 2013, 09:20)  Поступила информация, что используя UDP, от сервера можно и не дождаться потом ответа. Я не сильно разбираюсь, но объяснили, что не все роутеры (если клиент спрятан за NAT'ами) умеют передавать обратный пакет клиенту, там порты пробрасываются и все пакеты не доходят. Кстати, по поводу UDP. Как показала практика, 1. длина пакета по заголовку UDP и фактическая могут отличатся. 2. на CRC UDP пакета надеяться нельзя. Бывает, приходят данные, CRC в порядке, а внутри, в середине пакета, либо FF либо просто набор битов и байтов.. Замечено у Мегафона во внутресетевом роуминге.
|
|
|
|
|
Apr 22 2013, 06:13
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Цитата(Alechek @ Apr 22 2013, 08:08)  Кстати, по поводу UDP. Как показала практика, 1. длина пакета по заголовку UDP и фактическая могут отличатся. 2. на CRC UDP пакета надеяться нельзя. Бывает, приходят данные, CRC в порядке, а внутри, в середине пакета, либо FF либо просто набор битов и байтов.. Замечено у Мегафона во внутресетевом роуминге. 100% согласен. Для UDP-based протоколов необходима своя философия: 1. каждый пакет должен содержать идентификатор трекера. Обычно это строка imei, но чтобы не быть расточительным, можно использовать crc32 от нее или даже двухбайтный назначаемый номер трекера для парка из 65535 машин. 2. На сервере держим массив из нужного к-ва (по к-ву машин) u32 IP и u16 port, и обновляем при получении валидного пакета. Еще можно писать в массив таймстемп. Это на пару порядков меньше ОЗУ, чем используют такое же к-во открытых тсп-сокетов. 3. Конечно, на CRC заголовка нельзя полагаться (кстати, допускается нулевая). В каждом пакете должна содержаться crc32 или хотя-бы crc16. Конечно, это дополнительная нагрузка на обработчик сервера, без этого никак. В TCP, кстати, аналогично: если длина там строго контролируется по SEQ, то целостность данных - только обычным суммированием по модулю. 4. Длину можно брать и из заголовка: если используется crc, то при неверной длине она в любом случае не совпадет, и пакет отвергается.
|
|
|
|
|
May 9 2013, 18:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
x893, а у них демо доступ есть? Весь сайт облазил, нигде не нашел. Добавлено: Посмотрел на их цены и энтузиазм поутих: GpsGate Server Starter Pack Subscription 30 day free trial, then USD $49.75 monthlyGpsGate Server Subscription (5 device free) Monthly: USD $9.95Образец расчета абонентки: All devices sending data to your server require a subscription (e.g. vehicles, assets and users with personal trackers). If you have 12 vehicles, 2 operators and 1 Administrator you need 12 subscriptions. For that you need one GpsGate Server Starter Pack Subscription and 7 additional GpsGate Server Subscriptions. Выходит, x893, Вы каждый месяц им отстегиваете 200-5=195$+49.75$ = почти 250$?
Сообщение отредактировал Alt.F4 - May 9 2013, 19:12
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|