我的 Android 程序必须扫描 255 个 LAN 地址以查找 OData 服务(WCF 数据服务)是否可用。
该服务在 1 或 2 台计算机上运行,局域网上有大约 20 台设备,但是当我的代码“扫描”正在使用但不托管服务的 IP 地址时,它不会立即抛出异常,而是等待很长时间所以找到 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 处等待?
如果那里没有服务,我怎样才能立即检测到?