Windows Phone 上的网络服务发现

Network Service Discovery on Windows Phone

我想写一个简单的桌面应用程序和一个相应的移动应用程序,场景是:

  1. 我 运行 我笔记本电脑上的桌面应用程序
  2. 我 运行 我的 Lumia 上的移动应用程序(在同一个 wifi 网络上)
  3. phone 应用程序以某种方式找到并连接到桌面应用程序(我不想手动查找并输入 ip)
  4. 两人现在可以交流了

像这样的非常基本的应用程序可以在两者之间发送简单的短信。
我想一个示例应用程序类似于 "remote control" 用于您 phone 上的 PC,可以在市场上找到 here.
我从查看 UDP 多播开始,并花了一天时间尝试让它工作。这个想法是两个应用程序加入同一个多播组,phone 加入时向该组发送消息,PC 接收它并用它的 IP 响应,phone 然后与桌面应用程序建立 TCP 连接。听起来像是一个有效的解决方案,对吧?好吧,似乎无论我尝试什么,都会发生这种情况:

  1. 场景:移动应用 运行在实际 phone 上连接到与 PC 应用相同的 WiFi:消息正在发送但从未到达。
  2. 场景:移动应用程序 运行在与 PC 应用程序相同的 PC 上的模拟器上运行:消息发送和到达。

这是我尝试使用 sockets-for-pcl 时的代码 post。
这是我尝试使用 .NET 中已有的内容:
PC - 仅发送消息:

UdpClient udp = new UdpClient(port);
IPAddress group_ip = IPAddress.Parse("139.100.100.100");
IPEndPoint client_ipep = new IPEndPoint(group_ip, 3344);
byte[] b = System.Text.Encoding.UTF8.GetBytes(txtEntry.Text);
udp.Send(b, b.Length, client_ipep); 

PHONE - 仅接收:

HostName hostName = new HostName("139.100.100.100");
DatagramSocket udp = new DatagramSocket();
udp.MessageReceived += (sender, args) =>
{
    uint length = args.GetDataReader().ReadUInt32();
    string text = args.GetDataReader().ReadString(length); 
};
await udp.BindServiceNameAsync("3344");
udp.JoinMulticastGroup(hostName);

然而,一天后我放弃了,因为文档很少,调试需要我获得一些网络扫描工具...

当我在 Internet 上搜索一些用于网络服务发现的库时,我找到了一些 Android docs 但没有找到 Windows Phone 8.1。所以我想我的问题是:Windows Phone 是否有类似的东西?或者,如果您发现我的代码有任何问题,我必须更改什么才能使其通信?谢谢。

不要忘记设置一个有效的端口号并异步接收多播数据

This sample 可能对您有帮助