0

好的,我认为问题很简单。这仅适用于大学测试。我想蛮力攻击一些密码(不复杂,只是为了通过蛮力找到给定的字符串)。它基本上是一个 loooong for 循环组合,可以在新线程中执行。有没有办法在同一网络上的计算机上分发该“线程”?使用多台计算机(例如在电子课程中 - 有 100 台计算机)只是为了支持它们的处理能力相同的 for 循环(线程)。并且所有解析都显示在程序启动的那台计算机上(某种主计算机或服务器计算机)。

在 Java 中可能有这样的事情吗?Windows 7 是操作系统。

4

3 回答 3

1

如果您想自己构建应用程序而不是使用框架,我建议您浏览 RMI Trail:请参阅http://docs.oracle.com/javase/tutorial/rmi/

前段时间我自己做了一个简单的分布式计算引擎,结果证明使用 RMI 很容易。

于 2012-11-29T12:09:10.473 回答
0

它非常简单。您需要有一台主/控制器计算机和几台工作计算机或从属计算机。master 将问题分解成块并将块分配给 slave。从站执行大量工作,并在完成后向主站报告。

最复杂的部分是让主/从相互交谈。一个相对简单的解决方案是使用套接字并发明一些简单的通信协议。

主算法看起来像;

break problem into chunks
while problem not solved {
  wait for socket comms from slave
  if slave is asking for a chunk of work
    allocate chunk to slave
  else if slave is reporting a chunk didn't contain the solution
    mark chunk as completed
    allocate chunk to slave
  else if slave is reporting a chunk did contain the solution
    problem is solved
}

从属算法看起来像;

while problem not solved {
  ask master for a chunk of work
  process this chunk
  if chunk contains solution
    problem is solved
  report results back to master
}

您需要使您的块大小足够大,以便奴隶将大部分时间用于解决问题而不是与主人交谈。从站与主站对话的频率可能会决定单个主站能够处理的从站数量。乍一看,我会说调整块的大小,以便从站需要 2 或 3 分钟来处理它。

于 2012-11-29T12:21:01.133 回答
0

感谢您的回答。我可以使用任何已经制作的东西,我不需要对那部分进行编码。问题是,没有多个小问题,所以我可以将它们分发到其他集群并等待他们解决它们......只有一个 LONG LOOP,一个 LONG FOR LOOP 我想使用多个处理能力加速同一本地网络中的计算机。

我认为这应该是一些连接 Java 虚拟机的工具,而不是我单独编写的软件。不知何故,这是我看到解决方案的唯一方法。

于 2012-11-30T01:05:01.593 回答