首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 8中的SSDP搜索

Windows 8中的SSDP搜索
EN

Stack Overflow用户
提问于 2013-09-16 18:33:19
回答 1查看 1.8K关注 0票数 1

我是SSDP/UPNP/Socket和其他爵士乐的新手。我正在玩它,我只是想看看我的网络上的一个通用的SSDP搜索会带来什么。

使用这个SSDP嗅探器应用程序,我得到了很多结果,所以我尝试重新创建这个。

我正在使用下面的代码,我已经找到了不同版本的代码,但是我所做的所有调整似乎都没有带来任何结果。我在这里很茫然,希望得到任何指导。

谢谢!

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-18 11:23:36

我不熟悉C#或dotnet,但我可以看到M-搜索消息中的一些细节错误:

  • MAN头必须用双引号括起来,所以MAN: "ssdp:discover"\r\n
  • 缺少MX报头(多播所需)
  • 缺少用户代理头。
  • 最后遗漏了一条空行
  • 标题名应该是不区分大小写的,但我会用大写字母以防万一.

有关更多细节,请参见设备架构参考pdf

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18834893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档