首页 文章

Windows Phone上的网络服务发现

提问于
浏览
8

我期待编写一个简单的桌面应用程序和相应的移动应用程序,方案将是:

  • 我在笔记本电脑上运行桌面应用程序

  • 我在我的Lumia上运行移动应用程序(在同一个wifi网络上)

  • 手机应用程序以某种方式找到并连接到桌面应用程序(我不想手动查找并输入ip)

  • 这两个人现在可以沟通了

像这样的非常基本的应用程序将在两者之间发送简单的文本消息 .
我想一个示例应用程序就像你手机上的PC一样"remote control",一个可以在市场上找到here .
我开始研究UDP多播,并花了一天时间试图让它工作 . 想法是两个应用程序加入相同的多播组,加入时手机向该组发送消息,PC拿起它并用它的IP响应,然后手机与桌面应用程序 Build TCP连接 . 听起来像是一个有效的解决方案,对吧?好吧,无论我尝试什么,这都会发生:

  • 场景:在连接到与PC应用程序相同的WiFi的实际手机上运行的移动应用程序:正在发送消息但从未到达 .

  • 场景:在与PC应用程序相同的PC上的模拟器上运行的移动应用程序:消息发送和到达 .

当我尝试使用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 回答

  • 1

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

    This sample可能会帮到你

相关问题