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

带有套接字的Java客户端和PHP服务器,java,php,sockets,client-server,Java,Php,Sockets,Client Server,我已经找了几个小时了,只是需要一些关于我的情况的指导。我想创建一个简单的客户机/服务器程序。我原本打算用java实现这两个功能,但几周前我从godaddy购买了一个共享主机帐户,他们已经为新帐户禁用了java。所以,我想我下一个最好的选择,用我比较熟悉的语言来说,就是PHP。我一直在关注java站点上的套接字,并制作了java客户端。我一直在尝试将示例的服务器部分转换为PHP。显然,godaddy将允许您对共享服务器上的套接字使用fsockopen()。我想我需要知道的是,这是可能的吗?一旦ph

我已经找了几个小时了,只是需要一些关于我的情况的指导。我想创建一个简单的客户机/服务器程序。我原本打算用java实现这两个功能,但几周前我从godaddy购买了一个共享主机帐户,他们已经为新帐户禁用了java。所以,我想我下一个最好的选择,用我比较熟悉的语言来说,就是PHP。我一直在关注java站点上的套接字,并制作了java客户端。我一直在尝试将示例的服务器部分转换为PHP。显然,godaddy将允许您对共享服务器上的套接字使用fsockopen()。我想我需要知道的是,这是可能的吗?一旦php文件生成,我该如何运行它?这个例子说我需要在运行客户机之前启动服务器程序。但我不知道如何做到这一点。

我不会使用原始套接字来实现这一点。而是使用JSON over HTTP,因为PHP支持处理HTTP而无需任何特殊考虑。在GoDaddy或AmazonEC2上托管的apache实例上运行PHP页面非常简单。当然你可以使用插座,但实际上很少有人这样做。越来越多的人使用PHP处理和响应HTTP。这意味着,如果你在这里随大流,你会找到更多的人来帮助你回答问题。另外,两边都有API库,可以轻松地完成这项工作。使用套接字有很多事情你必须自己做,或者第一次使用原始套接字时会遇到各种奇怪的错误

此外,Java和PHP都很容易支持JSON处理,因此使用它可以非常轻松地将数据发送到客户端和服务器


如果你愿意,你当然可以在后端使用PHP,在前端使用Java,但我建议取消你的Go Daddy帐户,获得一个Amazon EC2/S3帐户,因为你有一个完整的机器,专门用于你想放在上面的任何东西。因此,如果您想在后端执行Java,您只需在amazon实例上安装JDK、Tomcat等,就可以了。您也可以在那里托管PHP。甚至有很多AMI实例是为Java或PHP堆栈预先安装的。

虽然我不能100%确定这一点,但我要继续说,它可能不会工作。对于托管公司来说,插座的价格可能会更高,所以它们很可能是最先被削减的产品之一。当您需要某个东西充当套接字服务器时,通常需要一个长时间运行的进程,该进程可以访问运行连接的机器上的某些端口。由于大多数托管公司为其每个客户机创建了
chroot
ed环境,因此客户机被拒绝了运行正版套接字服务器所需的安全访问

我在GoDaddy担任托管公司时的经验是,他们似乎是按照这一思路运作的。据我所知,GoDaddy将允许PHP读取套接字并充当套接字客户端。这与他们允许的
fsockopen
一致。我真诚地怀疑这是你所需要的

除非您确实需要让服务器将信息推送到客户机(而不是从服务器获取客户机请求数据),否则使用标准HTTP请求并让XML或JSON通过网络传输(PHP非常熟练地支持XML和JSON)确实会好得多。如果你真的需要socketserver,那么我会去webmasters.stackexchange.com,看看你是否能找到类似的建议


如果您决定创建一个PHPSocket服务器,那么Zend的一位同事会给您一个建议。它们非常锋利,所以希望它足以帮助您转换脚本(如果您决定采用这种方式)

谢谢,我会检查一下。我最终想创建一个非常小的4人在线游戏。我一直在阅读,并得到了这样的印象,插座的方式去做的东西。我以前在Java和PHP之间使用过JSON和一些Android应用程序,效果很好。如果我需要不断更新玩家的动作或动作,我不认为这是非常实际的。对于我的建议,游戏是一个特殊的例外,但前提是这个游戏是实时的或连续的。如果是回合制,那么我的建议仍然有效。但是,既然你说你正在做一个游戏,亚马逊EC2可能会为你提供更好的服务。我感谢你的帮助。我很高兴现在正朝着正确的方向前进。我刚刚注册了EC2,将试用。谢谢。实际上我只是在尝试PHP套接字服务器教程。