1

イーサネット通信を備えたマイクロコントローラーに基づくハードウェアがあります。

マイクロコントローラには TCP サーバーがあります。

ハードウェアを構成するために、Android 用の C# で作成されたアプリケーションがあります。

次に、アプリケーションには TCP クライアントがあります。

アプリがハードウェアを見つけるために、私が行っていることは、モバイルの同じネットワーク セグメントの各アドレスに ping を実行することです。つまり、私のモバイルの IP アドレスが 192.168.0.xx の場合、アドレス 192.168.0.1 からアドレス 192.168.0.255 に ping を実行します。

応答するアドレス、ソケットを開いてデータ フレームを送信しようとします。答えが正しければ、ローカル ネットワークにハードウェアが見つかったと想定します (複数のハードウェアが接続されている可能性があります)。

明らかに、応答しない IP アドレス、ソケットを開くことができない IP アドレス、または何か間違ったことに応答する IP アドレスは破棄されます。

これらの有効なアドレスがリストに表示され、ユーザーは対話するアドレスを選択できます。

また、これらの有効なアドレスはアプリケーションに保存されるため、次にアプリを開いたときに、保存されたアドレスに自動的に接続され、IP アドレスのスキャンが回避されます。

これは、ユーザーが初めてハードウェアをインストールしてアプリで構成したときに正しいように思えます

問題は、ルーターが月に 1 回 IP アドレスを更新するように構成されているというユーザーがいると知らされたことです。

これが発生した場合、アプリはすべての IP アドレスのスキャンを再度実行する必要があります。すべての IP のスキャンには時間がかかるため、これはやや面倒です。月に 1 回アプリとハードウェアを構成することにユーザーが満足しているとは思えません。

別の厄介な解決策として、静的 IP アドレスを使用することも考えられますが、それも良い考えではないと思います。

これを改善する方法について何か提案はありますか?

4

2 に答える 2