场景:我们是一个由22名成员组成的团队,他们每天使用唯一的ID登录本地计算机,然后使用一组登录连接到远程计算机。
此处用于连接远程计算机的登录不是唯一的。我的意思是可以使用相同的用户名连接多台计算机。
在一行中,22台远程机器只有5到6次登录,22个成员使用这些登录。
问题:由于远程计算机并非专用于每个员工。每天我们都需要向所有组发送邮件,询问谁连接到特定的远程计算机。如果有人回复是的..我们会要求他们断开..
我想用java开发一个小工具,它运行在每台机器上,并显示哪一台机器被哪台机器使用..
此站点中提到的代码很有用,但它没有指定谁使用该登录?链接:http://lazynetworkadmin.com/content/view/34/6/
我希望我明确指出:)
请指导我如何继续?你觉得这有可能吗?
注意:忘记提及操作系统,它是: Windows XP
答案 0 :(得分:1)
在远程计算机上,您可以运行netstat
程序,该程序输出如下内容:
C:\> netstat -n | find ":80"
TCP 192.168.1.33:1930 209.85.129.190:80 ESTABLISHED
TCP 192.168.1.33:2749 74.125.39.139:80 ESTABLISHED
TCP 192.168.1.33:2861 74.125.171.167:80 TIME_WAIT
从此输出中,您可以看到已建立的所有网络连接。在第三列中,您可以看到其他主机的IP地址和端口。 find
只保留包含“:80”的行(在我的例子中是我连接的所有远程HTTP主机)。由于您知道远程主机将连接到的端口,因此您可以按该端口号进行过滤。然后,第三列将包含连接到此主机的所有计算机的IP地址和端口。
从IP地址可以很容易地找到它的计算机。
更新
由于你想使用Java,它应该是直截了当的做法:
netstat -n
命令。List<String>
。word[0]
为TCP
,word[1]
以:3389
结尾且words[3]
为ESTABLISHED
的行。word[2]
。第一个元素是IP地址。在中央服务器上,可以通过Web服务器访问一些小程序:
例如:
remote0
发送192.168.0.33,192.168.0.35
作为其活跃客户。remote0:192.168.0.33
,remote0:192.168.0.35
。remote0
发送``(空响应)作为其活跃客户。因此,Web服务器需要处理两个URL:
/connections/list
列出了所有有效连接/connections/update
用于更新单个远程主机的连接听起来有点像工作,但这肯定是可行的。当它完成后,它对我来说非常有用。
答案 1 :(得分:0)
浏览本地代理。然后代理知道哪些连接是活动的。