WiFi и 3G подключают [мобильное] устройство к Интернету, чтобы оно могло подключаться к Интернету. 3G назначает общедоступный IP-адрес устройству, поэтому можно предположительно открыть сокет сервера и прослушивать соединения. Клиент должен знать мобильный IP, который может меняться довольно часто.
Bluetooth больше ориентирован на близость. Устройства, находящиеся поблизости, могут быть подключены после того, как вы с ними спарены, что требует взаимодействия обоих устройств, которые должны обмениваться данными.
Если целью является создание приложения, которое подключается к ближайшим устройствам, я могу подумать о следующих идеях:
- 3g: все устройства, на которых работает клиент, регистрируют свою позицию на центральном сервере баз данных. Если сервер обнаружит, что два клиента находятся в непосредственной близости, сообщите им, чтобы они могли подключиться через Интернет или через сервер
- WiFi: вы можете использовать ту же идею, что и 3g, или использовать широковещательные / многоадресные пакеты для трансляции своего присутствия. Другие приложения могут прослушивать эти трансляции и обнаруживать, какие другие устройства находятся рядом.
- Bluetooth: немного хитрее, поскольку устройство должно быть переведено в режим обнаружения, чтобы другие могли его «увидеть». Обнаруживаемый режим является временным состоянием и длится около 30 секунд (одновременно).