带有套接字的Java客户端和PHP服务器

时间:2011-08-02 02:24:13

标签: java php sockets client-server

我一直在寻找几个小时,只需要一些关于我情况的指导。我想创建一个简单的客户端/服务器程序。我原本打算在java中使用它们,但几周前我从godaddy购买了一个共享主机帐户,并且他们已经禁用了java用于新帐户。所以,我想我的下一个最佳选择,以及我熟悉的语言,是PHP。我一直关注java站点上的tutorial套接字,并制作了java客户端。我一直在尝试将示例的服务器部分转换为PHP。显然,godaddy会让你在共享服务器上使用fsockopen()作为套接字。我想我需要知道的是,这是可能的,如何制作php文件后如何运行?该示例说我需要在运行客户端之前启动服务器程序。我不知道怎么做。

2 个答案:

答案 0 :(得分:3)

虽然我不能100%肯定这一点,但我会继续说它可能不会起作用。对于托管公司来说,套接字可能是更昂贵的一面,因此很可能它们将成为首批需要削减的东西。当您需要充当套接字服务器的东西时,通常需要一个长时间运行的进程,该进程可以访问运行连接的计算机上的某些端口。由于大多数托管公司为其每个客户端创建chroot环境,因此客户端被拒绝了安全访问权限,而这些访问权限是他们运行正版套接字服务器所需要的。

我与GoDaddy作为托管公司的经历是,他们似乎按照这种思路运作。据我所知,GoDaddy将允许PHP 读取套接字并充当套接字客户端。这符合他们fsockopen的限额。我真诚地怀疑这是你需要的。

除非您确实需要将服务器推送信息发送到客户端(而不是让客户端从服务器请求数据),否则您最好使用标准HTTP请求并使用XML或JSON通过网络(XML和JSON都支持相当熟练的PHP)。如果你真的 拥有套接字服务器,那么我会去webmasters.stackexchange.com,看看你是否能找到类似于this one的推荐。

如果您确定要在此之后创建PHP套接字服务器,那么Zend的其中一个人就会有tutorial。他们非常敏锐,所以希望它足以帮助你转换脚本(如果这是你决定去的方式)

答案 1 :(得分:2)

我不会使用原始套接字来执行此操作。而是使用JSON over HTTP,因为PHP支持处理HTTP而无需任何特殊考虑。在GoDaddy或Amazon EC2上的托管apache实例上运行PHP页面非常简单。当然你可以使用套接字,但实际上很少有人这样做。越来越多的人使用PHP处理和响应HTTP。这意味着如果你在这里跟随牛群,你会找到更多可以帮助回答你问题的人。此外,双方都有API库可以轻松完成此操作。使用套接字会带来许多你必须自己做的事情,或者是第一次使用原始套接字时遇到的所有奇怪的错误。

Java和PHP也很容易支持JSON处理,因此很容易使用它将数据发送到客户端和服务器。

如果你愿意的话,你当然可以在后端使用PHP,在前端使用Java,但我建议取消你的Go-Daddy帐户并获得一个Amazon EC2 / S3帐户,因为你得到一台完整的机器专用于你的任何你想穿上它。因此,如果你想在后端做Java,你可以在亚马逊实例上自己安装JDK,Tomcat等,你就可以了。你也可以在那里托管PHP。甚至为Java或PHP堆栈预安装了大量AMI实例。