如何编写Web应用程序p2p网络代码?

时间:2011-05-11 01:30:37

标签: java php p2p websocket

我想编写一个Web应用程序代码,其中一个用户可以选择一个文件,而其他多个用户可以从那个用户的计算机上下载该指定文件。 那个用户必须打开电脑才能打开网页。

我不想拥有一台必须处理所有流量的大型主服务器。 那个用户的计算机就是服务器,坚持不懈。我明白我会使用洪流。

所有这一切都必须在网站上完成。

Web套接字是否有效?

请和谢谢。

3 个答案:

答案 0 :(得分:2)

由于各种原因,这实际上是不可能的:

  • 防火墙/ NAT
  • 动态IP
  • 用户计算机上没有运行“服务器”
  • 用户计算机上的权限
  • 如果用户只是删除机器上的文件会怎样?

要让它真正有效,你必须:

  • 说服用户在他们的机器上安装应用程序(你需要一个windows / linux / ... EXE)
  • 让用户打开防火墙中的端口(或使用某个库启用NAT passthru)
  • 让用户的PC在用户的IP更改时ping您的服务器

在服务器端,你必须保留几个数据库表,这里有一些我能想到的最好的数据库:

  • 用户的表格(用户ID [PK],当前IP,通讯端口,(可能是其他一些跟踪内容))
  • 可用下载表(下载ID [PK],用户ID [FK])

然后当有人想要下载和下载时,您必须(可能)使用必需的参数(远程用户的IP /端口/文件ID)启动您的应用程序,然后执行下载工作。

这绝不是一件容易的事。

答案 1 :(得分:0)

如果通过WebSockets表示HTML5的种类,我会远离它。 http://en.wikipedia.org/wiki/WebSockets#Browser_support

必须继续使用的计算机基本上就是您的服务器。即使它不是某个大服务器。

我的建议是在每台用户计算机上安装apache或其他一些小型Web服务器,并为每台计算机配备一个dyndns地址,以便您可以找到彼此。它比编码更容易。特别是如果它必须通过网页。

答案 2 :(得分:0)

您可以使用c#客户端库连接到bittorrent或等,并使用此模式上传/浸出。至于NAT /防火墙问题,它们都有很好的文档记录,并且正在使用协议的功能,即处理它。