Как обмениваться файлами по воздуху между Windows, macOS, Linux, iOS и Android
Семь кросс-платформенных решений, которые помогут перебрасывать файлы с девайса на девайс без проводов и лишней возни.
Функция AirDrop на Mac, позволяющая обмениваться файлами со всеми своими устройствами без проводов, появилась ещё в 2011 году — в том, что касается внедрения новых технологий, Apple всегда впереди. Аналогичная функция Near Share от Microsoft появилась лишь недавно, в предыдущем крупном обновлении Redstone 4.
AirDrop безупречен на устройствах от Apple, Near Share удобен на компьютерах и планшетах с Windows 10. Но что, если в вашем зоопарке устройств есть и девайсы с Windows, и с macOS, и с Linux, и с Android, и с iOS? Попробуйте один из этих способов.
1. Локальная сеть
Этот способ очень прост и универсален. Все современные ОС — Windows 10, macOS и Linux — поддерживают создание общих папок. А iOS и Android умеют подключаться к ним в локальной сети с помощью сторонних файловых менеджеров.
Просто расшарьте нужную папку, назначьте ей нужные права на чтение и запись, и можете подключаться к ней с любого устройства в локальной сети.
На десктопах просматривать сетевые папки можно в стандартных файловых менеджерах: «Проводнике» в Windows 10, Finder в macOS, Nautilus и Nemo в Linux. На мобильных устройствах можно воспользоваться сторонники приложениями, например ES File Manager для Android и FileMaster для iOS.
Преимущества: все средства для создания общих папок уже есть в ОС. Скорость обмена файлами зависит только от вашего Wi-Fi.
Недостатки: хотя в сети полно гидов, как настроить общие папки, многие пользователи не могут с этим справиться и предпочитают сторонние решения.
2. Облачное хранилище
Не хотите возиться с настройкой общих папок? Воспользуйтесь Dropbox, Google Drive или любым другим облачным хранилищем на ваш выбор. Установите соответствующее приложение, забрасывайте нужные файлы в папку облачного хранилища, а затем копируйте их оттуда в любой удобный момент.
Преимущества: копия ваших файлов всегда будет оставаться в облачном хранилище, и вы имеете к ним доступ, даже если компьютер с оригинальными файлами не в сети. И поскольку большинство облачных хранилищ поддерживают восстановление версий файлов, вы заодно будете иметь бэкап.
Недостатки: размер файловых хранилищ в той или иной мере ограничен. За дополнительное место придётся платить. Кроме того, скорость загрузки файлов в облачное хранилище может быть меньше, чем в локальной сети. Хотя тот же Dropbox умеет обмениваться файлами в локалке.
3. Snapdrop
Разработчики Snapdrop вдохновлялись AirDrop. Это очень простое веб-приложение, которое работает прямо в вашем браузере. Не нужно ничего скачивать и устанавливать. Просто откройте Snapdrop на всех устройствах, куда хотите перебрасывать файлы, и всё. Snapdrop позволяет перетаскивать файлы и папки прямо в окно браузера. Работает и на десктопах, и в Android с iOS.
Преимущества: предельная простота, работает без установки.
Недостатки: всё придётся перебрасывать вручную. Автоматическая синхронизация папок, работа без сети и прочие штуковины не предусмотрены.
4. AirDroid
AirDroid — кросс-платформенный инструмент, который позволяет обмениваться файлами между устройствами Windows, macOS, iOS и Android. Кроме того, приложение работает и в браузере, но для этого нужно создать учётную запись AirDroid.
Помимо обмена файлами, AirDroid предоставляет ещё несколько интересных возможностей. Например, можно писать сообщения на своём компьютере, чтобы затем пересылать их через телефон. Или просматривать уведомления с телефона в трее компьютера.
Преимущества: простое и популярное решение. Многие пользователи девайсов Android уже знакомы с AirDroid, так почему бы не использовать его?
Недостатки: возможности обмена файлами в бесплатной версии ограничены — вам придётся приобрести платную подписку за 20 долларов в год.
Peer-to-peer network over wifi in iOS
I’ve been at this for a few days now, and can’t seem to find a solution. I want to create a peer to peer network over wifi on iOS. All open source code seems to be supporting running a server or being a client, but there’s no code built to support being both — a peer. Is anybody aware of a way I can do this?
Have you looked at something like: github.com/robbiehanson/CocoaHTTPServer I know it’s still a client/server relationship but it appears that the built-in Apple adhoc networking api is still private.
I’m unclear on your question. Are you looking for code that allows you to create an adhoc WiFi network between two iOS devices or are you looking for a way for two iOS devices, already connected via WiFi, to perform p2p communications?
Just learn how internet and BSD sockets work. Use bind() calls. Use STUN servers. Use a lot of sockets. Use Reachability notifications API. Enumerate network interfaces. Bind to concrete ports. Use multicast sends if you wish. IP is wonderful world, but people who learns to code for Apple don’t ever get a thing 🙁
5 Answers 5
iOS 7 adds the Multipeer Connectivity Framework for exactly this purpose.
Have you thought of using Apple’s GameKit framework? I’ve used it in the past for some simple communication between devices. It’s really simple and can get you out of the gate quickly. This looks like a good tutorial.
The problem is this involves them accepting my app can use gamekit, which seems a bit random to the user.
Which part, the name GameKit, the GameKit UI or both? You can roll all your own custom UI and nobody will be the wiser. The GKPeerPickerController will simplify your life right out of the box and doesn’t look like one is playing a game. However, you can roll your own solution and have your own UI.
I’m currently using GameKit for p2p data transfer in a non-game, and I’m not aware that users were ever prompted to accept or approve this functionality. Bluetooth connections are fairly easy to set up, however, the connections are flaky and the data transmission is slow for more than small bits of data, compared to wi-fi.
GameKit part for p2p connection is deprecated. Apple recommends to use Multipeer Connectivity Framework but it is too slow
I think Open Peer is the right solution. It provides real direct peer-to-peer connection between devices without the need of a centralised server. Check out this introductory video.
You cannot create a wi-fi network programmatically in iOS using current APIs. GameKit offers some APIs to do so over bluetooth however.
If you wish to implement a custom solution using CocoaHTTPServer, be aware that you will still not be able to create a direct wi-fi connection, you will simply be able to connect devices on the same (pre-existing) wi-fi network.
Ad-hoc peer to peer Wi-Fi (such as 802.11s) in iOS is still a few years off. Maybe iOSX 😉
The documentation says: A GKSession object provides the ability to discover and connect to nearby iOS devices using Bluetooth or Wi-fi.
P2P сеть для iPhone
Не прошло и трех лет с момента релиза iPhone как, наконец, появилась возможность обмениваться файлами. Посредством P2P сети Soulseek.
Приложение под названием iSlsk позволяет владельцам iPhone’ов и iTouch’ей обмениваться музыкой, видео и другим файлом по сети Soulseek на средних скоростях.
За неимением в iPhone других возможностей обмена файлами, кроме как Wi-Fi и EDGE среднее время скачивания музыкального файла — примерно 2-3 минуты, а половины полнометражного фильма (видимо имеется ввиду 350 мб) — порядка 20 минут.
Как только файлы загружены на iPhone или iTouch — софтина автоматически синхронизирует их с библиотекой телефона, предоставляя пользователю «все готовенькое» для просмотра/прослушивания.
«Оставайтесь на связи — это только начало. » — заявляет Эрик Кастро (Eric Castro) в своем блоге.
Первыми протестировавшими работу приложения были журналисты Wired. Для его использования не требуется никакого аккаунта в сети Soulseek — вам нужно только ввести произвольные имя пользователя и пароль и, вуа ля, ваш аккаунт создан.
Скорость скачивания по Wi-Fi колеблется, в среднем, около показателя в 20 кб/сек, по EDGE — около 10 кб/сек. Но как и в любой P2P сети показатель скорости зависит, в первую очередь, от коннекта того, кто загружает файл (сид).
Эрик Кастро, разработчик программы, собрал ее из кусочков различных OpenSource приложений сети Soulseek и веб-клиента. Разработку он начал в феврале и, по словам Эрика, первоочередной целью было осуществить первую загрузку из сети Soulseek через его собственный iPhone.
Скачать iSlsk можно здесь.
Скачать десктопный клиент сети Soulseek можно здесь, хотя он и не требуется для обмена файлами через iPhone и iTouch.
Видео, демонстрирующее работу программы:
Журналисты Wired утверждают, что приложение работает именно так, как показано в ролике.