55286


iosではcorebluetooth  
android ではbleと認識しています。  
ios androidをコードからm対n接続もしくは1対m接続をbluetooth/bleで行い双方向で何か文字列等の送受信を行うことは可能ですか？？

可能であれば、キーワードなど教えていただけたら嬉しいです。


CC BY-SA 4.0
2019-05-26T14:59:02.417
55266
2019-05-27T20:59:31.863
31135
question
ios android bluetooth
ios android ble corebluetooth 双方向通信


割とマジで `Bluetooth` 仕様書  
仕様書が読めないなら解説書

大前提として `BLE` は `Bluetooth Low Energy`
の意味で、通信速度より消費電力削減を優先しています。なのでファイル共有のような大量データのやりとりには全く向きません。

`BLE` は非対称ネットワークであって `Peripheral` と `Central` に役割が分かれます。仕様上 `Peripheral` と
`Central` 間にて一定フォーマットの小さなデータを定期的にやりとりするのは得意ですが `Central` 同士 `Peripheral`
同士で通信することはできません。

スマホは通常 `Central` で使います。なのでスマホ同士で通信させることはできません。複数のスマホを `Peripheral` にして
`Central` なスマホ１台と接続することはできますが、これは従来通りのサーバークライアントであって p2p ではないです。

* * *

コメントで質問が追記されたので対応。

`BLE` の通信は周辺装置 (`Peripheral`) とPC本体 (`Central`)
の間での通信を最小限の電力で行うことを想定しています。そのため  
\- 基本は P→C 。だけど、相互に送受信することができます  
\- 電文内容は固定的なものとなります (GATT Profile で決まる/決める)

例えばキーボードと PC 本体間の通信では HID over GATT Profile を使い  
\- P→C キー状態一覧を送信 (`Caps` キーが押されている)  
\- `Central` は自分自身内部の `CapsLock` 状態を更新して  
\- C→P LED 点灯状況一覧を送信 (`CapsLock` LED 点灯)  
別のタイミングでは  
\- P→C キー状態一覧を送信 (`NumLock` キーが押されている)  
\- `Central` は自分自身内部の `NumLock` 状態を更新して  
\- C→P LED 点灯状況一覧を送信 (`NumLock` LED 消灯)  
のような通信ができます、というか、そういう通信しかしません。

スマホを `Peripheral` にしても、出来るのはそういう通信のみです。任意の電文を任意のタイミングでやりとりするには `BLE`
は向きませんのでご承知おきください。


CC BY-SA 4.0
2019-05-27T02:36:31.173
55277
2019-05-27T20:59:31.863
2019-05-27T20:59:31.863
8589
8589
55266
answer


大体、774RRさんが回答してるので別視点から、回答します。

まず、双方向通信を行うのにBLEを選択する意図が分からないのですが、  
そのしたいことって本当にBLEである必要ありますか？

文字列の交換は確かに出来るかもしれません。  
BLEはGATTプロファイルに基づいて通信しますが、  
GATTの仕様を確認すればサーバとクライアントの関係に近いことが分かるかと思います。

あとGATTで提供されているサービスも確認するといいかもしれません。  
このサービス中のどれに自分のやりたいことが当てはまるか考えてみると  
BLEである必要性が見えてくるかと思います。  
<https://www.bluetooth.com/specifications/gatt/services/>

ちなみにAndroid5.0以前ではCentralにしかなれません。  
スマホ端末間でBLE通信を行う際には相手側のOSに注意が必要です。


CC BY-SA 4.0
2019-05-27T08:51:05.870
55286
2019-05-27T08:51:05.870
7676
55266
answer