2012-02-05 69 views
1

最近我用java开发了一个简单的使用套接字的java应用程序。它工作正常。但是现在我想创建一个可以通过IPMSG等局域网进行通信的应用程序。功能将是需要说明局域网应用的概念

  1. 消息发送。
  2. 文件发送。
  3. 语音聊天。
  4. 群聊。
  5. 按需加密/解密。

这些是要包括的基本特征。

现在我面对过这里的混乱是

  • 的应用是对等的应用程序,其中一个用户可以做任何事情,还有什么其他的用户可以做一个同行。
  • 没有中央服务器,没有客户端。每个节点都充当服务器和客户端。

所以应用程序必须是对等的。但是,当我GOOGLE了它,然后我得到像客户端服务器只样品,当我和我的同事谈这件事时,他们也建议我的客户端 - 服务器模型,但没有理由为什么客户端服务器,为什么不对等。在这种情况下,我是对的吗?任何人都可以请在这种情况下指导我,因为一旦我开始这些概念的任何一个发展我不能恢复由于时间短缺。您的建议是最受欢迎的。

回答

0

我最终使用修改为支持P2P网络的客户端服务器模型。当一个节点进入网络时,它会广播它的存在,而其他节点不断监听新节点。每个节点将拥有自己的网络连接节点列表。如果新节点进入网络,他们将更新他们自己的列表。除了文件传输外,我对所有大部分操作都使用UDP,因为它需要在TCP中。

0

我认为建议服务器 - 客户端关系的主要原因是为了让日志更容易记录,或为每个人制作一个大型聊天室(如IRC)。如果需要登录,服务器也会验证登录信息。因此,如果没有服务器,钓鱼攻击将变得更加难以处理。

虽然我不明白为什么P2P聊天不起作用。如果我记得没错,Skype就是这么做的。我总是喜欢分散。祝你的项目好运。 :)

+0

没有登录设施。该应用程序只显示局域网中的人员,他们可以在他们想要通信的媒体中相互通信。 – ankurtr 2012-02-05 19:03:22

+0

@ ankur.trapasiya对不起,忘了标题的那部分。那么因为它是本地的,我真的不觉得有什么问题。 – 2012-02-05 19:05:42

+0

@ ankur.trapasiya:就是这一点。如果你没有专门的服务器,每个客户都可以登录,你必须开发另一种分散的方法来管理谁在线,谁不在。在局域网中,例如广播信标包是一种可能的解决方案。 – buc 2012-02-05 19:08:05

0

你可能想看看使用它像Avahi(Linux的FOSS)或Bonjour(苹果&的Windows开源而不是GPL)的Zeroconf标准和套餐。 Zeroconf允许在没有用户交互或中央配置服务器的情况下配置和检测网络服务。

+0

值得一提的是,iChat使用Bonjour为他们的iChat客户端进行局域网检测。 – 2012-02-05 19:29:56

+0

好吧,我正在尝试为所有的操作系​​统和java开发应用程序。我的问题依然存在。哪个是适合的服务器 - 客户机或对等机型... :-) – ankurtr 2012-02-05 19:59:08

+0

对不起,我不是很具体。 iChat使用Zeroconf(由Bonjour使用)进行局域网聊天,无需中央服务器。因此,如果您在与另一台计算机相同的局域网上运行iChat,它会检测到该计算机正在运行的聊天服务并自动连接到该聊天服务,从而允许您在没有中央服务器的情况下进行聊天。 – 2012-02-05 20:08:10