如何使用C#在局域网中查找可用IP地址

3

我正在尝试使用XAML和C#为本地局域网(Windows Store应用)开发一款消息聊天应用程序。首先,我如何通过IP地址知道在局域网中可用的人?

有没有示例代码或实现这个想法的思路?


1
你正在寻找多播DNS,也就是Bonjour。在Bonjour SDK中有适用于Bonjour的C#绑定。 - dtb
搜索相关的文章和示例。我对这项技术还很陌生。 - Lokesh
1
既然这是一个Windows Store应用程序,那么使用Bonjour之类的软件就不可行,对吧? 这篇文章使用Win32 API,因此也不可用。 - 0xFE
1个回答

0

WinRT 不支持组播 :(

但是你有两种解决方案:

  1. 使用 IP 广播:将你的 bonjour 消息发送到 255.255.255.255
  2. 添加一个服务器节点

请注意,解决方案1仅适用于局域网,并且可能受路由器和网关配置的限制。


谢谢Kronos。有没有更多对我有帮助的文章或文档? - Lokesh
@Lokesh,如果您可以安装服务器(选项2),为什么不安装Jabber服务器并使用许多可用的API制作Jabber客户端。我在http://code.google.com/p/jabber-net/wiki/GettingStarted上有一个很好的经验。 - kenny
发现了这个链接:http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/75dfa774-54a0-43a4-b489-ddc753d00ca4。虽然是用C++写的,但可以给你提供一个很好的思路。只需向地址为255.255.255.255的“主机”请求一个流,并在任何给定端口上编写你的问候信息。所有设备都应该监听该端口并回答一个问候。我会在发送我的问候消息时向设备发送已知可用客户端列表,以获得更快的发现服务。总之,每个设备都会发现并告诉其他人他们已经认识的人,所以你更多地处于P2P场景而不是客户端-服务器场景。 - Kronos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接