2009-08-27 45 views
1

在我公司,我们使用称为IPMsg的小型应用程序,这是一种messenger类工具,用于将消息和文件传递给公司中的其他人员,即使它允许多播消息。识别本地网络上的用户和计算机

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

它如何做到这一点?没有服务器用于消息路由,当通过netstat命令检查时,CMD中没有显示任何细节,例如它用于通信的协议和端口。

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

任何人都可以解释我如何做到这一点?

回答

0

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

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

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


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

您可以使用ARP/ICMP Ping来了解网络上存在的主机只要你输入正确的子网信息


多播消息也没什么特别的。这是所有网络堆栈提供的功能。

如果你想在.NET中进行重叠,那么它是允许的。检查this page on Code Project which gives a nice example

3

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

+0

在没有服务器的即时通讯工具的情况下,它*拥有*托管在端口上以接受传入的消息 – 2009-08-27 11:43:09

3

IPMsg可能会为所有客户端组播一个请求,以报告他们的用户和主机详细信息。

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

相关问题