6

私は 2 つの Android デバイスを持っています。1 つはサーバーとして機能し、もう 1 つはクライアントとして機能します。クライアントはサーバーに接続し、ファイルを要求します。これは、クライアント上の 1 つのスレッドとサーバー上の 1 つのスレッドで行われるため、両方が必要なことを続行できます。

その後、クライアントはサーバーへの接続を再試行して、別のファイルを要求します。現在java.io.IOException: Device or resource busy、接続しようとするとエラーが発生します ( socket.connect())。Bluetooth (Android の場合) が 2 つのデバイス間で 1 つのチャネルしか許可しないためですか? (別のデバイスであれば機能しますが、同じデバイスの場合は機能しませんか?) 両方の試行が同じサービス名と UUID で行われることに注意してください。

エラーが私のコードに固有のものであっても、そうであるかどうかを知りたいです。

システム: bluecove bluetooth ライブラリと通信する android 2.2.1。

4

2 に答える 2

6

同じUUID(universally UNIQUE Identifier)では絶対にありません。

そのための参照はhereから取得されました

たぶん複数で。サーバー/クライアント スタイルで複数のデバイスを接続できます。デバイスの 1 つをサーバーとして設定し、他のデバイスで複数のクライアントを起動することができます。私の最初の推測では、いくつかのクライアント スレッドを開始することになりますが、それぞれの MAC アドレスを変更する方法を見つける必要があるかもしれません。

ここでは、Mac アドレスを変更する方法についての別の議論を見つけることができますが、ルート化されたデバイスでのみ機能します。ルート化されていないものについては、他に何も見つかりません。プログラムでこれを行う方法についてはわかりませんが、開始する可能性があります。

ここでは、サーバーで同時に複数のクライアントを接続することについて説明します。私はこの質問からそこにたどり着きました。(これがあなたの最も近いショットかもしれません)

ここでは、ピア ツー ピア ネットワークについて説明します。

于 2012-11-14T15:15:05.203 に答える
1

私の知る限り、Bluetooth接続の場合、複数の接続はできません。Bluetooth は Connectivity API であり、デフォルトで同期されているため、一度に 1 つの接続のみが可能です。したがって、複数の接続を実行することはできません。

ただし、1 つの接続を作成し、その上で 2 秒の操作を実行してから、別の接続を作成し、通常のマルチタスク オペレーティング システムのように 2 秒の操作を実行するなど、別の方法で可能になる場合があります。

于 2012-03-23T04:40:55.273 に答える