2011-08-02 75 views
2

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

回答

2

我不会使用原始套接字来做到这一点。相反,使用HTTP上的JSON是因为PHP支持处理HTTP而没有任何特别的考虑。在GoDaddy或Amazon EC2上的托管apache实例上运行PHP页面很简单。当然你可以使用套接字,但实际上很少有人这样做。大量更多的人使用PHP处理和响应HTTP。这意味着如果你在这里追踪牛群,你会发现更多的人可以帮助回答你的问题。还有两边的API库可以轻松完成此操作。使用套接字提供了许多必须自己完成的事情,或者承受所有第一次使用原始套接字所带来的奇怪错误。

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

那么你肯定可以在前端使用PHP,如果你愿意,也可以在前端使用Java,但是我建议取消你的Go-Daddy账户,并且获得一个Amazon EC2/S3账户,因为你得到一台完整的机器专用于任何你想穿上它。所以如果你想在后端执行Java,你可以通过在Amazon的实例上安装JDK,Tomcat等来完成任务。您也可以在那里托管PHP。甚至还有大量预装Java或PHP堆栈的AMI实例。

+0

谢谢,我会检查到。我最终想创建一个非常小的4人在线游戏。我一直在阅读并得到这样的印象,即套接字是这样的事情的途径。我之前在Java和PHP之间使用过一些Android应用程序的JSON,并且工作正常。如果我需要不断更新球员的动作或行动,我不认为这是非常实际的。 – Mark

+0

好的。对于我的建议,游戏是一个特殊的例外,但只有在游戏将实时或连续的情况下。如果轮到的话我的建议仍然有效。但是,现在你说你正在做一个游戏Amazon EC2可能会为你提供更好的服务。 – chubbsondubs

+0

我感谢您的帮助。我很高兴现在正朝着正确的方向前进。我刚刚注册了EC2,并会试用它。 – Mark

3

虽然我不能100%确定这一点,但我会继续说,它可能无法正常工作。对于一个托管公司来说,套接字可能更加昂贵,所以他们很可能会成为第一个被削减的东西。当你需要一些充当套接字服务器的东西时,你通常需要一个长时间运行的进程来访问运行连接的机器上的某些端口。由于大多数托管公司为其每个客户端创建了一个chroot ed环境,客户端将被拒绝安全访问,他们需要能够运行真正的套接字服务器。

我与GoDaddy作为托管公司的经验是,他们似乎沿着这一思路进行操作。据我所知,GoDaddy将允许PHP将读为套接字,并充当套接字客户端。这与他们的fsockopen的津贴一致。我真诚地怀疑这是你需要的。

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

如果您确实想要创建一个PHP Socket服务器,Zend的人员中有一个tutorial。他们非常尖锐,所以希望这将足以帮助你转换脚本(如果这是你决定去的方式)

+0

谢谢。我实际上只是尝试了PHP套接字服务器教程。 – Mark

相关问题