2013-05-12 263 views
1

我正在研究一个可与家庭自动化系统相媲美的想法。 网络设备的布局会是这样的: enter image description hereTCP Holepunch实现

我想要的是我的手机应用程序能够在任何时候都与家庭服务器进行通信,同时也为服务器能够达到我的电话(推送通知)。 为此,我认为在数据中心使用我的服务器作为流量中心来实施TCP-Holepunching会是一个好主意。

问题是,由于我的Java技能还不够好,我不得不使用PHP脚本语言编写我的服务器,但PHP无法保持套接字的活动状态。

是否有TCP-holepunching服务器软件(在Debian中可执行)可用,它能够保持套接字活动并将来自我的服务器的任何命令推向正确的目的地(即:电话),反之亦然?

+0

关于你的赏金:这是不可能提供一个工作的解决方案与少量的信息。有很多变量,例如“防火墙”是什么意思?一个NAT?仅HTTP?您打算使用哪种类型的手机?看看XMPP协议,对于手机来说也许还有BOSH.Can't比这更具体,但。 – escitalopram 2013-05-18 22:13:27

+0

基本上,只要设备能够建立到数据中心服务器的连接,基本上我应该能够建立从哪里连接的连接,该连接必须保持活动状态才能通过 – xorinzor 2013-05-18 23:10:46

+0

进行通信I可能有错误的“工作答案”,但我的意思是某种代码示例工作,而不是仅仅告诉我,如果您使用代码A和库B,您应该能够创建产品C – xorinzor 2013-05-18 23:12:25

回答

1

有办法让套接字在PHP中工作。一个库可以在这里找到: http://socketo.me/

另外一个简单的设置服务器的方法可以用NodeJS来完成。您使用JavaScript编写服务器(在Google Chrome的V8引擎上运行),然后您可以基于事件处理持久连接。

只需几行代码就可以(使用NodeJS)对中继服务器进行编码(从手机中继到家用PC,反之亦然)。

+0

我会做一些编码,这应该工作:)谢谢! – xorinzor 2013-05-22 12:52:03

+1

我刚刚通过[The Node Beginner Book](http://www.nodebeginner.org/)的一半,这种用例似乎是它的用途。我正在成为一名粉丝。 – Jason 2013-05-23 01:17:00

+1

这不是打孔,这只是一个代理/中继。打孔的重点在于实际数据直接在防火墙设备之间进行。 – 2016-02-03 10:37:09