Java 相互依赖对象建模

Java 相互依赖对象建模,java,android,networking,model,Java,Android,Networking,Model,我的(Android)应用程序需要网络扫描功能 我想给它一个子网,我想让它向子网上的每个可能的地址发送一个请求,并确定它是否响应 我有两门课: 设备,其中包含一个地址和一个属性available(bool)(可通过方法checkAvailable进行设置) NetworkerScanner,它扩展线程并实例化所有设备 最后,我计划创建一个对象,它是一个可观察集合上的观察者,该集合将包含所有可用设备 将可用设备添加到集合并不明显 算法 Let col be a Observable Colle

我的(Android)应用程序需要网络扫描功能

我想给它一个子网,我想让它向子网上的每个可能的地址发送一个请求,并确定它是否响应

我有两门课:

  • 设备,其中包含一个地址和一个属性
    available
    (bool)(可通过方法
    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
    时,将对
    onResponseListener
    (HTTP请求的回调方法)的引用传递给它。因为我会在我的
    网络扫描仪中创建侦听器,所以我可以捕获本地集合。但我觉得这是错误的。喜欢大错特错


请建议.< /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地址。。。更重要的是,你没有抓住重点,这是一个建模问题。