我正在本地网络上运行一个简单的http服务器,并试图使用安卓设备上的NsdManager来发现它。我跟踪了Android关于这个问题的培训指南,但我的设备没有找到任何服务。
这是我的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我做错了什么?
提前感谢!
发布于 2015-01-06 23:01:04
我不认为这是您的主要问题,但是服务类型应该是“_http._tcp”。对于我(API 21),您的代码工作正常,发现"_http._tcp“仍然返回”_http._tcp“的服务。
https://stackoverflow.com/questions/25339910
复制相似问题