需要澄清局域网应用概念

时间:2012-02-05 18:14:50

标签: java sockets client-server p2p lan

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

  1. 消息发送。
  2. 文件发送。
  3. 语音聊天。
  4. 群聊。
  5. 按需加密/解密。
  6. 这些是要包含的基本功能。

    现在我面临的困惑是

    • 该应用程序是一个对等应用程序,其中一个用户可以执行其他用户可以执行的任何操作。
    • 没有集中式服务器,没有客户端。每个节点都充当服务器和客户端。

    因此应用程序必须是对等的。但当我用谷歌搜索它然后我得到像客户端 - 服务器的样本,当我与我的同行谈论这个,然后他们建议我客户端 - 服务器模型,但没有理由为什么客户端服务器和为什么不点对点。我是对的吗?任何人都可以在这种情况下指导我,因为一旦我开始开发任何这些概念我不能回复由于时间短缺。非常欢迎您的建议。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可能需要查看Zeroconf标准和使用它的软件包,例如Avahi(Linux FOSS)或Bonjour(Apple& Windows开源但不是GPL)。 Zeroconf允许在没有用户交互或中央配置服务器的情况下配置和检测网络服务。

答案 2 :(得分:0)

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