Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Обмен между устройствами в неизвестной сети


Автор: kami 4.5.2015, 18:42
Доброго времени суток, уважаемые!
Так как сформулировать короткий вопрос не получается  smile ,  лучше опишу условие задачи:
Исходные данные:
1. FMX, Delphi XE7, куча IPad 2, на которых залочено (но можно разлочить) все что только можно, дабы шаловливые ручки пользователей не жмакали куда не следует, установленное на IPad-ах свое ПО.
2. Пользователей IPad считаем вообще не связанными с IT, посему для них такие понятия как IP-адрес, время видимости Bluetooth и т.п. - из разряда китайских иероглифов. При этом есть грамотные админы, которые заведуют устройствами и правами доступа на них.
3. Периодически 3 - 4 IPad (неизвестно какие, выборка случайна) "уходят" группой в "свободное плавание". GSM-сети нет, вай-фаями не пахнет, но устройства находятся в пределах прямой видимости друг от друга.
4. "Главное" из этих устройств по каким-нибудь аппаратным признакам выделить не получается (п.3 - выборка и раздача пользователям случайны), но одного из пользователей условно можно назвать главным (пусть это будет "капитан", раз у нас "свободное плавание" smile  )

Задача
Необходимо обеспечить обмен данными между устройствами в этом "свободном плавании".

Пред-вопрос (вместе с собственными мыслями)
Как и чем?
Изначально заказчик говорил "давайте по bluetooth". Но связывание по bluetooth - не совсем тривиальная задача на мой взгляд и противоречит п.2. Кроме того - обмен должен идти "от любого (одного) ко всем", а не только к серверу, а с bluetooth такое, вроде (???), не получится.
Сейчас я склоняюсь к wi-fi, там (вроде как) пользователю меньше работы, да и побыстрее будет:
- администратор настраивает возможность использования wi-fi планшета (всех) в качестве роутера + входит на остальных устройствах в получившиеся сетки, чтобы планшеты запомнили пароли и остальное
- после выдачи планшетов "капитан" расшаривает свою сетку, остальные просто включают у себя wi-fi
- устройства "остальных" подключаются к сети и...
и дальше - затык. Скорее всего - надо будет использовать App Tethering из комплекта поставки Delphi, но поможет ли он при наличии сети с полностью неизвестными параметрами, или надо будет городить свой огород с UDP броадкастами и т.п. ?

Сам вопрос:
У кого есть опыт/представление построения чего-либо подобного, поделитесь - как сие (и в аппаратном и в программном плане) можно реализовать?

Автор: Illusion Dolphin 5.5.2015, 12:08
Опята нету, поэтому только мысли.
На счёт bluetooth согласен - это будет не только сложно, но и нестабильно.
Wifi вариант лучше, но я не совсем понял, как вы собираетесь настраивать все устройства. По мне проблемы:
1) При росте количества устройств проблема настроек. Если было 10 и добавилось 11е устройство, то надо все 11 донастраивать. Имхо это очень не гут.
2) Если "свободные группы" встречаются, то будет проблема с лидером.
Как на счёт того чтобы не выбирать лидера, а носить с собой в группе связку battarypack + wifi и все подсоединяются к этой сети? В таком случае человеку просто надо подключиться к нужному файфай (так собирается группа) и в рамках этой сети можно делать всё. 
P.S. Вот реализация http://habrahabr.ru/post/216941/ + http://habrahabr.ru/company/touchinstinct/blog/198814/

Автор: Romikgy 5.5.2015, 12:37
Цитата(kami @  4.5.2015,  17:42 Найти цитируемый пост)
и дальше - затык. 

а в чем собственно затык ? главный wifi hotspot становится сервером, все остальные получать ip по dhcp ... если на сервере будет свой серверный софт, все кто в сети стукнут в него и представятся... а дальше клиент-сервер приложения рулят... в чем сложность?

Автор: Illusion Dolphin 5.5.2015, 13:03
Цитата

если на сервере будет свой серверный софт, все кто в сети стукнут в него и представятся

В #3 сказано что нет сервера

Автор: Romikgy 5.5.2015, 15:07
Цитата(Illusion Dolphin @  5.5.2015,  12:03 Найти цитируемый пост)
В #3 сказано что нет сервера 

сервер будет динамический , кто стал hotspotom тот и сервер...

Автор: kami 5.5.2015, 22:24
Вау, не думал, что вообще будет отклик на эту тему. Спасибо, джентльмены!!!

Цитата(Illusion Dolphin @  5.5.2015,  12:08 Найти цитируемый пост)
Если было 10 и добавилось 11е устройство, то надо все 11 донастраивать. Имхо это очень не гут.

Согласен, это надо будет обсуждать с админами заказчика. Быть может, проведут минимальный ликбез для населения - как (и в какую) сетку входить. Этот вопрос пока останется открытым.
Цитата(Illusion Dolphin @  5.5.2015,  12:08 Найти цитируемый пост)
Если "свободные группы" встречаются, то будет проблема с лидером.

Проблемы с лидером не будет, он должен быть всегда. Тут оговорка - лидер в контексте темы это человек, в обезяности которого будет входить нажатие некоторых дополнительных кнопочек для создания сетки.
Цитата(Illusion Dolphin @  5.5.2015,  12:08 Найти цитируемый пост)
Как на счёт того чтобы не выбирать лидера, а носить с собой в группе связку battarypack + wifi и все подсоединяются к этой сети?

Увы - не судьба :( , обсуждалось подобное.
Цитата(Illusion Dolphin @  5.5.2015,  12:08 Найти цитируемый пост)
P.S. Вот реализация http://habrahabr.ru/post/216941/ + http://habrahabr.ru/company/touchinstinct/blog/198814/

Класс, но в FireMonkey (насколько я поискал в гугле), это не портировали, так что ближайшим аналогом остается AppTethering, хотя...все никак не доберусь до его внутренностей, может для IOS он именно на этом фреймворке и основан.

Цитата(Romikgy @  5.5.2015,  12:37 Найти цитируемый пост)
если на сервере будет свой серверный софт, все кто в сети стукнут в него и представятся... а дальше клиент-сервер приложения рулят... в чем сложность? 

Сложность именно в динамическом сервере, вернее - что использовать из компонентов для сетевого обмена. Хз чем и куда клиентам стучаться и как соединения потом держать. Было бы это в Windows, вопросов бы никаких не возникло. Но IOS и FireMonkey, с которыми никогда ранее не имел дела... сейчас потихоньку преодолеваю приобретенную аллергию на Indy smile , ибо о winsock приходится забыть...
Ладно, может с AppTethering все будет проще, чем я думаю...

В любом случае - главные непонятки были именно по аппаратной (и программной, но выходящей за рамки разрабатываемого софта) части, основное направление, оказывается, было взято верно (wi-fi + одно устройство в качестве роутера/свича рулит).

Всем огромное спасибо!

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