代码之家  ›  专栏  ›  技术社区  ›  alexus

除了PHP之外,是否可以不使用任何东西进行点对点通信?

  •  0
  • alexus  · 技术社区  · 15 年前

    是否可以只使用PHP实现P2P?没有闪存或Java,显然没有安装某种代理/客户端在一台计算机上。

    因此,尽管它可能不是“真的”p2p,但它会使用服务器建立某种类型的连接,但其余的通信必须使用p2p完成。

    我为一点通信错误道歉,“php”不是一个php二进制文件,而是一个运行在Web服务器上的php脚本,它远离两个对等方,所以每个对等方只有一个浏览器。

    7 回复  |  直到 11 年前
        1
  •  2
  •   Quentin    15 年前

    不。

    您可以用php编写一个p2p客户机/服务器,但它必须安装在参与的计算机上。

    不能让php在Web服务器上运行,这会导致另外两台计算机在没有安装p2p软件的情况下进行通信。

    您甚至不能使用javascript来帮助-相同的源站策略会阻止它。

    运行浏览器的javascript可以使用一个基于PHP的服务器作为中间人,这样两个客户机就可以进行通信——但是你不能实现P2P。

        2
  •  1
  •   Eddy    15 年前

    没有安装某种 计算机上的代理/客户端

    每台计算机都必须安装PHP二进制文件。

    编辑

    我在另一篇文章中看到了你提到的基于浏览器的。javascript中的安全限制将禁止这种类型的交互

        3
  •  1
  •   Shourya Sharma    11 年前

    这是非理论性的,因为服务器端应用程序(php)没有对等端的系统访问权限,这需要定义端口、IP地址等来建立套接字连接。

    添加:

    但是,如果您要在每个对等的Web服务器中使用PHP,这可能会给您提供所需的功能。

        4
  •  0
  •   TJ L    15 年前

    点对点通信不意味着通信直接从一个客户机到另一个客户机,中间没有任何服务器吗?由于PHP是一个基于服务器的软件,我认为你在上面写的任何程序都不能被认为是真正的P2P。

    但是,如果您想让客户机到客户机作为中间人与PHP服务器进行通信,这是绝对可能的。

        5
  •  0
  •   Blixt    15 年前

    取决于您是否希望浏览器向这个PHP应用程序发送数据。

    不过,我已经完全用PHP制作了IRC机器人,它以类似MIRC的方式在我的Web浏览器中显示它们的状态和输出。我只是将超时限制设置为无限,并使用套接字连接到IRC服务器。你可以连接到任何东西。您甚至可以让它监听传入的连接并处理它们。

    你不能做的是让浏览器保持双向连接而不中断请求(目前还没有…)

        6
  •  0
  •   sebasgo    15 年前

    不,不是真的。PHP脚本只能运行很短的时间。通常,默认的最大运行时间是两分钟,这通常不足以进行P2P通信。在此之后,脚本将被取消,但服务器管理员可以停用该脚本。但即使在整个下载时间内,服务器和客户机之间的HTTP连接也必须保持不变。此时客户端浏览器将显示其页面加载指示器。如果连接中断,大多数Web服务器都会终止php脚本,从而取消p2p下载。

    因此,也许可以实现P2P协议,但是在客户机/服务器场景中,您会遇到PHP脚本执行模型的问题。

        7
  •  0
  •   Tom    13 年前

    是的,但它不是通常所说的p2p,因为中间有一个服务器。不过,我有一种感觉,你想做的是让你的同龄人彼此交流,而不是在他们之间建立一个没有“中间人”服务器的直接连接(这通常是P2P的意思)。

    根据可伸缩性要求,实现这种通信可能很简单(客户机上的简单轮询脚本),也可能很苛刻(异步Comet服务器)。