java – 执行UPNP扫描不返回飞利浦色相桥

前端之家收集整理的这篇文章主要介绍了java – 执行UPNP扫描不返回飞利浦色相桥前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图实现我自己的UpNP扫描,它主要是工作,并证明这不是我,我有一个 Windows程序,允许您发送数据包,看看有什么回应.

我在端口1900发送一个数据包到239.255.255.250,我发送以下数据:

  1. M-SEARCH * HTTP/1.1
  2. Host: 239.255.255.250:1900
  3. Man: "ssdp:discover"
  4. MX: 10
  5. ST: ssdp:all

只需要进一步的信息,在我的Java代码(Android)我有以下,但我得到相同的响应作为数据包测试程序应用程序:

  1. try
  2. {
  3. byte[] sendData = new byte[1024];
  4. //byte[] receiveData = new byte[1024];
  5. byte[] receiveData;
  6. 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";
  7. sendData = mSearch.getBytes();
  8.  
  9. DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,InetAddress.getByName("239.255.255.250"),1900);
  10.  
  11. DatagramSocket clientSocket = new DatagramSocket();
  12. clientSocket.send(sendPacket);
  13.  
  14. while (keepGoing)
  15. {
  16. receiveData = new byte[1024];
  17. receivePacket = new DatagramPacket(receiveData,receiveData.length);
  18. clientSocket.receive(receivePacket);
  19.  
  20. String response = new String(receivePacket.getData());
  21.  
  22. if (response == null || response.length() == 0)
  23. {
  24. keepGoing = false;
  25. }
  26. else
  27. {
  28. iupnpScan.updateText(response);
  29. }
  30.  
  31. }
  32. iupnpScan.complete(true);
  33. return true;
  34. }
  35. catch (UnknownHostException ex)
  36. {
  37. Log.e("MainActivity","Unknown Host Exception: " + ex.toString());
  38. }
  39. catch (SocketException ex)
  40. {
  41. Log.e("MainActivity","Socket Exception: " + ex.toString());
  42. }
  43. catch (IOException ex)
  44. {
  45. Log.e("MainActivity","IO Exception: " + ex.toString());
  46. }
  47. iupnpScan.complete(false);
  48. return false;

我正在收到一些设备回来,比如我的智能电视,路由器和NAS,但是Phyips Hue Bridge从来没有在回复中返回.

飞利浦色相桥是否实现了UpNP的不同之处,我可以看到,现在所发现的响应是什么,需要什么才能找到.

谢谢

解决方法

虽然 Philips site笔记支持UPnP,但我不知道它是否为真.

我会尝试扫描整个网络并通过IP测试IP.是的,我知道,这不是标准所说的,但现实有时是疯狂的.

这个发现已经在this way实施了.

我过去编程了一个网络搜索(寻找一个Raspberry PI),我可以使用的最好的方法是匹配的MAC地址与我已知的地址开始.幸运的是,Philips publish their MAC addresses range.

猜你在找的Java相关文章