在远程机器上,您可以运行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 地址和端口。唯一保留包含“:80”的find
行(在我的情况下是我连接到的所有远程HTTP主机)。由于您知道远程主机将连接到的端口,因此您可以按该端口号进行过滤。第三列将包含连接到该主机的所有计算机的 IP 地址和端口。
从IP地址应该很容易找出它是谁的计算机。
更新:
当您想使用 Java 时,应该直截了当地做什么:
- 运行
netstat -n
命令。
- 将输出捕获在
List<String>
.
- 将每一行分成单词。
- 只保留那些以
word[0]
is TCP
、word[1]
以:3389
和words[3]
is结尾的行ESTABLISHED
。
- 在冒号处拆分
word[2]
这些行。第一个元素是 IP 地址。
- 将这些 IP 地址的列表报告给中央服务器。
在中央服务器上,有一个可以通过 Web 服务器访问的小程序:
- 服务器保留一个活动连接列表。每个都由远程主机、客户端主机和上次更新的时间戳组成。
- 接受来自远程机器的传入连接。
- 从一个连接接收客户端 IP 地址列表。
- 从“活动列表”中删除从该 IP 报告的所有客户端 IP 地址。
- 显示结果列表。
例如:
- 最初,活动连接列表是空的。
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
用于更新单个远程主机的连接
听起来有点工作,但这当然是可行的。当它完成时,它对我来说非常有用。