0

私は現在、さまざまなノードにメッセージをディスパッチするBluetoothデバイスに接続する必要があるAndroidプロジェクトに取り組んでいます。これは、適切なメッセージを適切なノード(多くのマイクロコントローラー)に渡す必要があることを意味します。

現時点では、マスターマイクロコントローラーから文字列を送信または受信できます。問題を解決する最善の方法は、マスターマイクロコントローラーノードがメッセージを繰り返して他のすべてのノードにブロードキャストすることだと思います。Androidの部分では、受信者のIDと送信したいデータの後に配列を作成するのが良い習慣かどうか疑問に思いました。IDは8ビットで、データは文字列になります。その後、intを文字列にキャストし、両方の文字列を連結してid+dataを送信します。

これは私の問題を解決するための良い方法ですか、それとももっとエレガントな方法がありますか?

4

1 に答える 1

1

文字列をバイトにキャストし、すべてをバイトの配列として送信する方が効率的です。深刻なネットワークプロトコルは、そのようなテキストデータを使用することはありません。ただ楽しみのためにトライアルをしているだけなら、それでも大丈夫です。

これが、メッシュの無限の指数関数的伝播で私が目にする本当の問題です。誰かにメッセージを送信し、それをすべての隣人に送信するとします。彼らはそれをすべての隣人に転送します。誰がそれをすべての隣人に転送しますか。グラフにループがある場合は、それをすでに見た人に送り返され、再び転送されます。そして、それは決して死ぬことはありません。ループがない場合を除いて、その場合はメッシュがなく、非常に壊れやすく、断片化する可能性があります。同じメッセージの再送信を防ぐための何らかの方法が必要です。おそらく、メッセージIDフィールドのように単純で、同じメッセージIDを再度送信しないようにする必要があります。ただし、そのためには大量のメッセージ番号のプールが必要になります。128ビットのUUIDのようなものです。

于 2013-02-05T03:51:46.303 に答える