【发布时间】:2026-01-30 07:30:01
【问题描述】:
我想写一个简单的桌面应用和相应的移动应用,场景是:
- 我在笔记本电脑上运行桌面应用程序
- 我在 Lumia 上运行移动应用程序(在同一个 wifi 网络上)
- 手机应用程序以某种方式找到并连接到桌面应用程序(我不想手动查找和输入 ip)
- 现在两者可以通信了
像这样的一个非常基本的应用程序将在两者之间发送简单的短信。
我想一个示例应用程序类似于手机上的 PC 的“遥控器”,可以在市场上找到 here。
我从查看 UDP 多播开始,并花了一天时间试图让它工作。这个想法是两个应用程序都加入同一个多播组,加入时手机会向该组发送消息,PC 拿起它并用它的 IP 进行响应,然后手机与桌面应用程序建立 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);
然而,一天后我放弃了,因为文档稀缺,调试需要我获得一些网络扫描工具......
当我在 Internet 上搜索一些用于网络服务发现的库时,我找到了一些 Android docs,但没有找到适用于 Windows Phone 8.1 的库。所以我想我的问题是:Windows Phone 有类似的东西吗?或者,如果您发现我的代码有任何问题,我必须进行哪些更改才能使其进行通信?谢谢。
【问题讨论】:
标签: c# network-programming udp windows-phone-8.1