没有中央服务器的聊天程序

时间:2011-01-01 14:54:21

标签: security chat

我正在开发一个聊天应用程序(在VB.Net中)。这将是一个“安全”的聊天程序。所有流量都将被加密(我还需要为此找到最佳方法,但现在不是问题。)

目前该计划有效。我有一个服务器应用程序和一个客户端应用程但是,我想设置应用程序,以便它不需要中央服务器来运行它。

我可以采取什么方法来分散网络?

我认为我需要以某种方式开发客户端,以便它们也充当服务器。

客户如何知道连接所需的服务器/服务器何时停止会发生什么?如果没有中央服务器,客户端/服务器现在如何在网络中拥有其他节点?

充其量我不希望客户端知道不同节点的IP地址是什么,但是如果没有中央服务器,我认为这是不可能的。

如前所述,该应用程序将用VB.Net编写,但我认为此语言并不重要。

只想知道我可以遵循的不同方法。

3 个答案:

答案 0 :(得分:2)

您需要一些已知的IP地址,以便客户端最初进入网络。一旦客户端成为网络的一部分,事情可能会更加分散,但第一步需要一些东西。

基本上只有两个选项 - 用户提供一个选项(用于网络的现有节点 - 基本上是BitTorrent跟踪器的工作方式),或者您在网关节点(实际上是中央服务器)中进行硬编码。 / p>

答案 1 :(得分:2)

在Kademlia协议(you can find it here)的论文中查找示例。如果您只想快速浏览一下,请查看维基百科页面http://en.wikipedia.org/wiki/Kademlia。 Kademlia协议以分散的方式定义网络中节点查找的方式。它已成功应用于eMule软件 - 因此经过测试才能真正发挥作用。

将它应用到聊天软件应该不会造成严重问题。

答案 2 :(得分:0)

也许你可以看到uChat程序。这是来自uTorrent创建者的程序,在没有服务器的情况下进行聊天。

这个想法是从磁链接连接到一个swarm并用它来发送接收消息。这是Amber的回答,你需要一个接入点,可能是服务器,知道群,手动ip等。

以下是uChat演示文稿:http://blog.bittorrent.com/2011/06/30/uchat-we-just-need-each-other/