是否有可能只使用PHP进行对等通信

时间:2009-07-14 15:33:44

标签: php p2p

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

所以即使它可能不是“真正的”p2p,但是它使用服务器建立某种连接,但其余的通信必须使用p2p来完成

我道歉,因为“php”我的意思不是一个php二进制文件,而是一个托管在远离两个对等点的Web服务器上的php脚本,所以每个对等方只有一个浏览器。

8 个答案:

答案 0 :(得分:2)

没有

您可以使用PHP编写P2P客户端/服务器 - 但必须在参与计算机上安装它。

您无法在Web服务器上运行PHP,导致其他两台计算机在未安装P2P软件的情况下相互通信。

你甚至无法使用JavaScript来帮助 - 相同的原始政策会阻止它。

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

答案 1 :(得分:1)

  

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

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

修改

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

答案 2 :(得分:1)

这是非理论上的,因为服务器端应用程序(PHP)没有对等系统访问权限,这是为了建立套接字连接而定义端口,IP地址等所必需的。

此外:

但是,如果您在每个对等网络服务器中使用PHP,那么可能会为您提供所需的信息。

答案 3 :(得分:0)

对等通信是否意味着通信直接从一个客户端传输到另一个客户端,而中间没有任何服务器?由于PHP是基于服务器的软件,因此我认为您在其上编写的任何程序都不能被认为是真正的p2p。

但是,如果你想让客户端与php服务器作为中间人进行客户端通信,那肯定是可能的。

答案 4 :(得分:0)

取决于您是否希望浏览器将数据发送到此PHP应用程序。

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

你不能做的是让浏览器在不中断请求的情况下保持双向连接(不管怎样......)

答案 5 :(得分:0)

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

所以有可能实现p2p协议,但在客户端/服务器场景中,你会遇到php脚本执行模型的问题。

答案 6 :(得分:0)

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

根据可扩展性要求,实现这种通信可能是微不足道的(客户端上的简单轮询脚本),也可能是要求苛刻的(异步彗星服务器)。

答案 7 :(得分:0)

双方都需要运行一个服务器,比如 apache,尽管为了演示目的,你可以只使用内置的 php 测试服务器。接下来,您将不得不研究 php 中的防火墙漏洞,我在 github 上看到了一个脚本,但很久以前。是的,可以做到,如果您的客户不是精明的程序员类型,您可能需要确保他们安装并运行了 php。除非您将路径变量添加到 Windows 中的系统注册表中,否则路径变量可能无法工作,因此请确保您提供一个 bat 文件,以确保路径在系统注册表中,以便 Windows 可以找到它。抱歉,我不是 linux 用户。 接下来,您必须开发代码。有关于打孔如何工作的说明,它确实需要公共域上的服务器,这需要允许 2 台计算机找到彼此的 IP 地址。也许您可以在免费网站(例如 www.000.webhost.com)上设置某些内容,或者您​​可以使用某种内置机制,例如使用人员电子邮件地址。报告当前ip。

最大的问题是路由器和防火墙,但即使数据包指向公共 ip,仍然需要知道局域网上的目的地,因此有关如何写入数据包的信息应该是直接的。运气好的话,您可能会找到一个为您完成大部分工作的脚本。