我有基于具有以太网通信的微控制器的硬件。
微控制器中有一个 TCP 服务器。
为了配置硬件,我有一个用 C# 为 android 制作的应用程序。
反过来,该应用程序有一个 TCP 客户端。
为了让应用程序找到我的硬件,我正在做的是 ping 我手机同一网段的每个地址。也就是说,如果我的手机的IP地址是192.168.0.xx,我从地址192.168.0.1 ping到地址192.168.0.255。
那些响应的地址,我尝试打开一个套接字并发送一个数据帧,如果答案是正确的,我假设我在本地网络中找到了一个硬件(可能连接了多个)
显然,那些没有响应的 IP 地址,或者无法打开套接字或响应错误的 IP 地址将被丢弃。
这些有效地址显示在列表中,供用户选择与之交互的地址。
另外,这些有效地址会保存在应用程序中,以便下次打开应用程序时,它会自动连接到存储的地址,避免扫描IP地址。
用户第一次安装硬件并使用应用程序配置时,这对我来说似乎是正确的
问题是我被告知有用户他们的路由器配置为每月更新一次 IP 地址。
如果发生这种情况,应用程序应该再次执行对所有 IP 地址的扫描,这有点麻烦,因为扫描所有 IPs 需要一些时间,我认为用户不会乐于每月配置一次他们的应用程序和硬件。
另一个麻烦的解决方案可能是使用静态 IP 地址,但我认为这也不是一个好主意。
关于如何改进这一点的任何建议?