识别本地网络上的用户和计算机

时间:2009-08-27 11:29:57

标签: c# c++ network-programming network-protocols

在我的公司,我们使用名为IPMsg的小型应用程序,这是一种信使类型的工具,可以将消息和文件传递给公司的其他人员,甚至允许组播消息。

还列出了用户的用户名,主机名和IP地址。

它是如何做到的?消息路由没有服务器,当通过CMD中的 netstat 命令检查时,它没有显示任何协议和端口等详细信息它用来沟通。

VC ++中的同一站点上也有源代码。我不明白一行代码......(我是C#家伙)

任何人都可以解释一下它是如何做到的吗?

3 个答案:

答案 0 :(得分:3)

一种简单的方法是让应用程序侦听某个网络端口,当您启动它的实例时,它会尝试连接到同一网络上每台计算机上的该端口。如果其他计算机打开该端口并正确回答,那么您已找到该应用程序的另一个实例。

答案 1 :(得分:3)

IPMsg可能会多播请求所有客户端报告其用户和主机详细信息。

当Windows资源管理器尝试在网络上查找其他计算机时,会使用类似的机制。描述了这种类型的多播发现的良好描述here

答案 2 :(得分:0)

IPMsg是一个守护程序,它侦听作为连接端口的特定端口上的传入连接。您可以使用Wireshark找出它使用的端口。

启动wireshark,开始侦听已连接到LAN的接口,然后开始发送任何消息,wireshark也会在屏幕上显示带有端口号的消息。

该应用程序是点对点软件,不需要中央服务器软件来路由消息。它只有一个接受传入连接的小守护进程。这就是Jabber即时消息传递协议的工作方式。


正如你所说,它列出了用户的用户名,主机名和IP地址,你的意思是它ping网络并找到它吗?如果是,那么实际上可以在本地网络上找到计算机的IP地址,这需要您知道您所连接的子网。

如果输入正确的子网信息,您可以使用ARP / ICMP Ping了解网络中存在的主机


组播消息也没什么特别之处。它是所有网络堆栈提供的功能。

如果你想在.NET中进行多变,那就是允许的。查看this page on Code Project which gives a nice example