Java 相互依赖对象建模
我的(Android)应用程序需要网络扫描功能 我想给它一个子网,我想让它向子网上的每个可能的地址发送一个请求,并确定它是否响应 我有两门课:Java 相互依赖对象建模,java,android,networking,model,Java,Android,Networking,Model,我的(Android)应用程序需要网络扫描功能 我想给它一个子网,我想让它向子网上的每个可能的地址发送一个请求,并确定它是否响应 我有两门课: 设备,其中包含一个地址和一个属性available(bool)(可通过方法checkAvailable进行设置) NetworkerScanner,它扩展线程并实例化所有设备 最后,我计划创建一个对象,它是一个可观察集合上的观察者,该集合将包含所有可用设备 将可用设备添加到集合并不明显 算法 Let col be a Observable Colle
- 设备,其中包含一个地址和一个属性
(bool)(可通过方法available
进行设置)checkAvailable
- NetworkerScanner,它扩展
并实例化所有线程
设备
- 最后,我计划创建一个对象,它是一个可观察集合上的观察者,该集合将包含所有可用设备
Let col be a Observable Collection
For each possible address
Instantiate a corresponding Device
On a new, separate thread, get this new device's availability.
If it's available, then add it to col.
检查设备的可用性不是即时的(我使用的是截取,它使用回调)
如何从HTTP请求回调将设备添加到集合中
我有几个想法:
- 实例化集合时,将集合的引用传递给设备,这似乎是个坏主意,因为集合没有理由成为设备的属性。更重要的是,如果我想在同一
实例上运行多个扫描,它将不再工作,因为设备
只能有一个集合设备
- 我还可以将对集合的引用传递给
方法,但我觉得这是一个技巧(并且是错误类型的技巧)checkAvailable
- 调用
时,将对checkAvailable
(HTTP请求的回调方法)的引用传递给它。因为我会在我的onResponseListener
网络扫描仪中创建侦听器,所以我可以捕获本地集合。但我觉得这是错误的。喜欢大错特错
请建议.< /P>“我想给它一个子网,我希望它能对子网上的每个可能的地址发送一个请求,并确定它是否响应。”这在IPv4<代码> /24 < /C>网络上是可行的,但是考虑一个IPv4<代码> /16 < /C>网络,它有65534个可能的主机,或者是一个IPv4
/8
网络,可能有16777214台主机。甚至不要考虑一个标准的IPv6 <代码> /64代码>网络,1846740407370951616可能的主机,即使每秒1000000个地址也要花费超过584542年的时间来扫描。这是真的,尽管应用程序将与连接到电话接入点的设备一起使用,所以这对我来说不是什么问题,这并不意味着什么。我们有拥有IPv6/64
网络和IPv4/16
网络的WAP,因为所有WAP都连接到WLC以方便漫游。事实上,我的公司和其他公司现在需要任何支持IPv6的应用程序,而你根本无法扫描标准IPv6网络上的每个IPv6地址。。。更重要的是,你没有抓住重点,这是一个建模问题。