首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个节点(网络上的计算机)支持Java (Brute-Force Application)

多个节点(网络上的计算机)支持Java (Brute-Force Application)
EN

Stack Overflow用户
提问于 2012-11-29 19:53:10
回答 3查看 660关注 0票数 0

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

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

EN

回答 3

Stack Overflow用户

发布于 2012-11-29 20:09:10

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

不久前,我自己做了一个简单的分布式计算引擎,结果证明使用RMI非常容易。

票数 1
EN

Stack Overflow用户

发布于 2012-11-29 20:21:01

这很简单。您需要有一台主/控制器计算机和几台工作计算机或从计算机。主节点将问题分解为块,并将块分配给从节点。从机执行大量工作,并在完成后向主机报告。

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

主算法看起来像这样;

代码语言:javascript
复制
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
}

从属算法看起来像这样;

代码语言:javascript
复制
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分钟来处理它。

票数 0
EN

Stack Overflow用户

发布于 2012-11-30 09:05:02

谢谢你的回答。我可以使用任何已经制作好的东西,我不需要编写那部分代码。问题是,没有多个小问题,所以我可以将它们分发到其他集群,等待它们解决它们……只有一个长循环,一个长FOR循环,我想使用同一本地网络中多台计算机的处理能力来加快速度。

我在想,这应该是连接Java虚拟机的工具,而不是我单独编写的软件。不知何故,这是我认为解决这个问题的唯一方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13625249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档