我在本地网络上运行一个简单的http服务器,并尝试使用Android设备上的NsdManager来发现它。我已关注Android training guide on this matter,但我的设备未找到任何服务。
这是我的Android代码:
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void setupNetworkDiscovery()
{
discoveryListener = new NsdManager.DiscoveryListener()
{
@Override
public void onStopDiscoveryFailed(String serviceType, int errorCode)
{
// TODO Auto-generated method stub
}
@Override
public void onStartDiscoveryFailed(String serviceType, int errorCode)
{
Log.d(getPackageName(), "Start failed");
}
@Override
public void onServiceLost(NsdServiceInfo serviceInfo)
{
// TODO Auto-generated method stub
}
@Override
public void onServiceFound(NsdServiceInfo serviceInfo)
{
Log.d(getPackageName(), "Found a service");
// display the service info
StringBuilder sb = new StringBuilder();
sb.append(serviceInfo.toString());
sb.append(" - name: ");
sb.append(serviceInfo.getServiceName());
sb.append("; type: ");
sb.append(serviceInfo.getServiceType());
sb.append("\n");
servicesLabel.append(sb.toString());
}
@Override
public void onDiscoveryStopped(String serviceType)
{
// TODO Auto-generated method stub
}
@Override
public void onDiscoveryStarted(String serviceType)
{
Log.d(getPackageName(), "Start succeeded");
}
};
nsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE);
nsdManager.discoverServices("_http._tcp", NsdManager.PROTOCOL_DNS_SD, discoveryListener);
}
我得到的唯一日志消息是"开始成功"来自 onDiscoveryStarted 。
服务器当然正在运行,因为我可以使用浏览器连接到它。 nmap还确认端口已打开:
Nmap scan report for 192.168.1.104
Host is up (0.00011s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
我做错了什么?
提前致谢!
答案 0 :(得分:1)
我不认为这是您的主要问题,但服务类型应为“_http._tcp”。 (你最后错过了点) 对我来说(API 21),你的代码工作正常,发现“_http._tcp”仍然返回“_http._tcp”的服务。