检测特定IP上的服务是否可用的最快方法是什么?

时间:2013-09-11 09:31:54

标签: android wcf odata4j

我的Android程序必须扫描255个LAN地址,以查找OData服务(WCF数据服务)是否可用。

该服务在1台或2台计算机上运行,​​局域网上大约有20台设备但是当我的代码“扫描”正在使用的IP地址但未托管该服务时,它不会抛出异常immediatley而是等待它很长一段时间,所以找到2个地址花了10分钟。

以下是代码:

try
              {
                String url = String.format("http://%s/InformationService/InformationService.svc/", ip);
                ODataConsumer consumer = ODataJerseyConsumer.create(url);
                Enumerable<OObject> result= consumer.callFunction("CheckInformation")
                  .execute();

                Log.i("DEBUG", "Service available: " + ip);

}

  catch (Throwable e)
              {
                //e.printStackTrace();
                Log.i("DEBUG", "No service: " + ip);
              }

如果服务没有在那里托管,它为什么要等待保留的IP?

如果那里没有服务,如何立即检测到?

1 个答案:

答案 0 :(得分:1)

我要说的第一件事就是只检查网址的可用性,你不需要调用服务方法。

然后从你的帖子中就不清楚了,

  1. 是否要检查给定网址(特定IP)上的svc(wcf)是否存在

  2. 您还想检查一下,如果wcf退出,是否可以接听电话?

  3. 在任何情况下,如果你在SO本身上引用这两个链接,我觉得你肯定会得到你想要的东西。

    注意:我没有在任何时候对Android进行过这种检查,但是当你想要检查wcf(或任何网址是否有效)时,一般比如检查svc是否在网址上退出),那么你可以简单地制作网络获取网址的请求(不仅仅是wcf svc)以及获得有效http状态的响应,然后这是有效的网址