SSDP在Windows Phone 8的搜索 [英] SSDP Search in Windows Phone 8
问题描述
我是新的SSDP / UPNP /插座和所有的爵士乐。我用它打了一下周围,我只是想看看我的网络上通用的SSDP搜索将弹出。
使用此 SSDP嗅探器的应用程序,我得到了不少成果,所以我试图重新创建。
我用下面的code,我已经发现了各种版本,但所有的调整我似乎并没有带回任何结果。我pretty的太多茫然这里将AP preciate任何指导。
谢谢!
私人常量字符串SSDP_IP =239.255.255.250;
私人常量字符串SSDP_PORT =1900;
私人常量字符串SSDP_QUERY =M-SEARCH * HTTP / 1.1 \ r \ N+
主持人:+ SSDP_IP +:+ SSDP_PORT +\ r \ N+
男子:SSDP:发现\ r \ N+
ST:SSDP:所有\ r \ N的;
DatagramSocket的插座;
异步公共无效SsdpQueryAsync()
{
VAR REMOTEIP =新Windows.Networking.HostName(SSDP_IP);
VAR reqBuff = Encoding.UTF8.GetBytes(SSDP_QUERY);
插座=新的DatagramSocket();
socket.MessageReceived + =(发件人,参数)=>
{
//该被调用的每个响应该查询设备...
Task.Run(()=>
{
//做些有益的事
});
};
等待socket.BindEndpointAsync(NULL,);
socket.JoinMulticastGroup(REMOTEIP);
使用(VAR流=等待socket.GetOutputStreamAsync(REMOTEIP,SSDP_PORT))
{
等待stream.WriteAsync(reqBuff.AsBuffer());
}
等待Task.Delay(5000);
}
我不熟悉C#或DOTNET的API,但我可以看到一些细节错误的M-SEARCH消息:
- MAN标头必须用双引号括起来,所以
MAN:SSDP:发现\ r \ñ
- MX头部丢失(用于多播)
- User-Agent头是缺少
- 在最终错过了一个空行
- 在头名据称不区分大小写,但我会用大写以防万一......
请参见设备架构参考PDF 了解更多细节
I'm new at SSDP/UPNP/Sockets and all that jazz. I'm playing around with it a bit and I just want to see what a generic SSDP search on my network will bring up.
Using this SSDP Sniffer app, I get a lot of results so I'm attempting to recreate this.
I'm using the following code, which I've found various versions of, but all the tweaking I do doesn't appear to bring back any results. I pretty much at a loss here and would appreciate any guidance.
thanks!
private const string SSDP_IP = "239.255.255.250";
private const string SSDP_PORT = "1900";
private const string SSDP_QUERY = "M-SEARCH * HTTP/1.1\r\n" +
"Host: " + SSDP_IP + ":" + SSDP_PORT + "\r\n" +
"Man: ssdp:discover\r\n" +
"ST: ssdp:all\r\n";
DataGramSocket socket;
async public void SsdpQueryAsync()
{
var remoteIP = new Windows.Networking.HostName(SSDP_IP);
var reqBuff = Encoding.UTF8.GetBytes(SSDP_QUERY);
socket = new DatagramSocket();
socket.MessageReceived += (sender, args) =>
{
// This is invoked for each device that responds to the query...
Task.Run(() =>
{
// do something useful
});
};
await socket.BindEndpointAsync(null, "");
socket.JoinMulticastGroup(remoteIP);
using (var stream = await socket.GetOutputStreamAsync(remoteIP, SSDP_PORT))
{
await stream.WriteAsync(reqBuff.AsBuffer());
}
await Task.Delay(5000);
}
I'm not familiar with C# or dotnet APIs, but I can see some details wrong with the M-SEARCH message:
- MAN header must be enclosed in double quotes, so
MAN: "ssdp:discover"\r\n
- MX header is missing (required for multicast)
- USER-AGENT header is missing
- missing an empty line in the end
- Header names are supposedly case insensitive, but I'd use upper case just in case...
See the Device Architecture reference pdf for more details
这篇关于SSDP在Windows Phone 8的搜索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!