[英]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中未列出任何内容。 消息可能未正确格式化?
您需要在公告中包括其他字段NT
和USN
您需要为NT
标头发送3 + num_services个具有不同值的公告:
USN
标头也随这些而变化。 有关详细信息,请参阅UPnP论坛中的文档包中的设备体系结构文档1.2.2可用设备-使用ssdp:alive进行通知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.