繁体   English   中英

通过“ UPnP”宣布我的服务

[英]Announce my service with “UPnP”

我有一个Web服务,在启动时,我想通过与UPnP兼容的NOTIFY向本地网络宣布该服务。 如果可能的话,我将不包含lib(如cling),并使其尽可能简单。

到目前为止的代码:

String NOTIFY
            = "NOTIFY * HTTP/1.1\r\n"
            + "NTS:ssdp:alive\r\n"
            + "Location: http://192.168.1.10\r\n\r\n";

    InetAddress addr;
    MulticastSocket socket;
    DatagramPacket dp;

    try {
        addr = InetAddress.getByName("239.255.255.250");
        socket = new MulticastSocket(1900);
        socket.setReuseAddress(true);
        socket.setSoTimeout(3000);
        socket.joinGroup(addr);

        byte[] buf = NOTIFY.getBytes("UTF-8");
        dp = new DatagramPacket(buf, buf.length, addr, 1900);

        // send out 10 notifys, then stop to send
        for (int i = 10; i > 0; i--) {
            socket.send(dp);
            Thread.sleep(3000);
        }
    } catch (Exception ex) {
        System.err.println(ex);
    }

我正在使用Clink工作台进行检查,但是UI中未列出任何内容。 消息可能未正确格式化?

您需要在公告中包括其他字段NTUSN

您需要为NT标头发送3 + num_services个具有不同值的公告:

  • upnp:rootdevice
  • UUID
  • 设备类型
  • 服务类型(您的设备提供的每一项服务)

USN标头也随这些而变化。 有关详细信息,请参阅UPnP论坛中的文档包中的设备体系结构文档1.2.2可用设备-使用ssdp:alive进行通知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM