我试图在Android中使用java实现DIAL protocol。从M-SEARCH Response获取位置标题
遵循协议实现,我必须做一个M-SEARCH请求。为此,我使用以下代码:
private final static String DISCOVER_MESSAGE = "M-SEARCH * HTTP/1.1\r\n"
+ "HOST: 239.255.255.250:1900\r\n" + "MAN: \"ssdp:discover\"\r\n"
+ "MX: 120\r\n" + "ST: urn:dialmultiscreenorg:service:dial:1\r\n";
和实际的方法:
// Set the MulticastSocket to DIAL implementation.
// See the Discover Message for its full implementation.
final int port = 1900;
InetAddress multicastAddress = InetAddress.getByName("239.255.255.250");
MulticastSocket usedSocket = new MulticastSocket(port);
usedSocket.setReuseAddress(true);
usedSocket.setSoTimeout(130000);
usedSocket.joinGroup(multicastAddress);
byte[] requestMessage = DISCOVER_MESSAGE.getBytes("UTF-8");
DatagramPacket datagramPacket = new DatagramPacket(requestMessage,
requestMessage.length, multicastAddress, port);
// Send the package.
usedSocket.send(datagramPacket);
// Listen for the response.
byte[] buf = new byte[9000];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
usedSocket.receive(packet);
response = new String(packet.getData());
我现在遇到的问题是,根据本说明书中:
的SSDP /接收具有上述搜索目标的M-SEARCH请求的UPnP服务器应按照1的第1.3.3节中的定义进行响应,包括包含用于根设备的UPnP描述的绝对HTTP URL的LOCATIONheader。 URL的主机部分应解析为IPv4地址或IPv4地址。
但所有我在回应包获得,似乎是我送了相同的数据。
这可能是由于我错误的阅读回复,我不确定。如何从这个M-SEARCH响应中获取位置标题?
这可能是由错误的M-SEARCH请求引起的吗?