Windows Phone上的网络服务发现

时间:2015-05-09 16:10:40

标签: c# network-programming udp windows-phone-8.1

我本来想写一个简单的桌面应用程序和相应的移动应用程序,方案是:

  1. 我在笔记本电脑上运行桌面应用
  2. 我在我的Lumia上运行移动应用程序(在同一个wifi网络上)
  3. 手机应用程序以某种方式找到并连接到桌面应用程序(我不想手动查找并输入ip)
  4. 这两个人现在可以沟通了
  5. 这样一个非常基本的应用就是在两者之间发送简单的短信 我想一个示例应用程序就像是手机上的PC的“遥控器”,可以在市场上找到here
    我开始研究UDP多播,并花了一天时间试图让它工作。想法是两个应用程序加入相同的多播组,加入时手机向该组发送消息,PC拿起它并用它的IP响应,然后手机与桌面应用程序建立TCP连接。听起来像是一个有效的解决方案,对吧?好吧,无论我怎样尝试,都会发生这种情况:

    1. 场景:在实际手机上运行的移动应用程序连接到与PC应用程序相同的WiFi:正在发送消息但从未到达。
    2. 场景:在与PC应用程序相同的PC上的模拟器上运行的移动应用程序:消息发送和到达。
    3. 当我尝试使用sockets-for-pcl时,这是一篇包含代码的帖子 以下是我尝试使用.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); 
      

      电话 - 仅接收:

      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);
      

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

      当我在互联网上搜索某些用于网络服务发现的库时,我发现了一些Android docs,但没有找到Windows Phone 8.1的内容。所以我想我的问题是:Windows Phone有什么类似的吗?或者,如果您发现我的代码有任何问题,我需要更改哪些内容才能进行通信?感谢。

1 个答案:

答案 0 :(得分:1)

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

This sample可能会帮助您