Boa*_*rdy 11 java android upnp philips-hue
我正在尝试实现我自己的UpNP扫描,它主要是工作,并且为了证明这不是我,我有一个Windows程序,允许您发送数据包,看看有什么响应回来.
我正在向239.255.255.250端口发送数据包1900,我发送以下数据:
M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
Man: "ssdp:discover"
MX: 10
ST: ssdp:all
Run Code Online (Sandbox Code Playgroud)
只是为了进一步的信息,在我的Java代码(Android)中,我有以下内容,但我得到与数据包测试器应用程序相同的响应:
try
{
byte[] sendData = new byte[1024];
//byte[] receiveData = new byte[1024];
byte[] receiveData;
String mSearch = "M-SEARCH * HTTP/1.1\r\nHost: 239.255.255.250:1900\r\nMan: \"ssdp:discover\"\r\nMX: 10\r\nST: ssdp:all\r\n\r\n";
sendData = mSearch.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("239.255.255.250"), 1900);
DatagramSocket clientSocket = new DatagramSocket();
clientSocket.send(sendPacket);
while (keepGoing)
{
receiveData = new byte[1024];
receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String response = new String(receivePacket.getData());
if (response == null || response.length() == 0)
{
keepGoing = false;
}
else
{
iupnpScan.updateText(response);
}
}
iupnpScan.complete(true);
return true;
}
catch (UnknownHostException ex)
{
Log.e("MainActivity", "Unknown Host Exception: " + ex.toString());
}
catch (SocketException ex)
{
Log.e("MainActivity", "Socket Exception: " + ex.toString());
}
catch (IOException ex)
{
Log.e("MainActivity", "IO Exception: " + ex.toString());
}
iupnpScan.complete(false);
return false;
Run Code Online (Sandbox Code Playgroud)
我收到了一些设备,比如我的智能电视,路由器和NAS,但飞利浦Hue桥在回复中从未返回.
飞利浦Hue Bridge是否以不同方式实现UpNP?我所能看到的就是他们现在发回的回应是什么,需要找到它.
虽然飞利浦网站说它支持UPnP,但我不知道这是不是真的。
我会尝试扫描整个网络并逐个 IP 测试。是的,我知道,这不是标准所说的,但现实有时是疯狂的。
这个发现已经以这种方式实现了。
我过去编写了一个网络搜索(寻找 Raspberry PI),我可以使用的最佳方法是将 MAC 地址与我已知的地址开头相匹配。幸运的是,飞利浦公布了他们的 MAC 地址范围。
| 归档时间: |
|
| 查看次数: |
1365 次 |
| 最近记录: |