PHP客户端和Java Server之间的客户端 - 服务器网络

时间:2010-04-21 10:25:01

标签: java php architecture client

我有一个已完成99%的大学项目。它由两部分组成 - 网站(PHP)和桌面(Java)。

人们在网站上拥有自己的帐户,他们希望查询有关其帐户的不同信息。他们发送一个由桌面应用程序接收的短信,该短信查询网站(MySQL)的数据库并相应地发送回复。这部分工作得非常好。问题在于,有时网站希望指示桌面应用程序将特定SMS发送到特定号码。显然除了把所有负载都放到数据库服务器之外似乎没办法......这就是我使它工作的方式。网站将SMS作业放在特定的表格中。 Java应用程序一次又一次地轮询该表,如果它找到了一个作业,它就会执行它。即使这部分工作正常,但不幸的是,我的大学不能接受这样的数据库调查。 :(

我能想到的另一种方法是使用客户端 - 服务器。我尝试制作Java服务器及其PHP客户端。因此,无论何时发送SMS,网站都会打开与桌面应用程序的套接字连接并发送两个字符串(单元格#和SMS消息)。不幸的是我无法做到这一点。我成功地创建了一个Java服务器,当它通过Java客户端连接时工作正常,类似我的PHP客户端正确连接到PHP服务器,但是当我尝试跨越它们时,他们开始互相讨厌...... PHP显示没有错误,但Java在尝试读取输入流的标题时会给出StreamCorruptedException。

有人可以告诉我可以尝试让PHP客户端和Java服务器协同工作吗?或者,如果所述目的可以通过其他方式实现,怎么做?

此致 亚西尔

2 个答案:

答案 0 :(得分:3)

等等......你在使用对象流吗?根据java文档,StreamCorruptedException是“当从对象流中读取的控件信息违反内部一致性检查时抛出”。我怀疑你的PHP应用程序正在发送Java认为是序列化对象的东西。你为什么不去低科技并读一个字符串?以下对我来说当天起作用了:

       ServerSocket serverSocket = new ServerSocket(port);
       Socket clientSocket = serverSocket.accept();
       BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

       while((inputLine = in.readLine())!=null)
      {
        //Do whatever
      }

答案 1 :(得分:1)

您可以尝试调查Quercus。它是一个在java中运行PHP的服务器。您可以直接从PHP调用java调用,就好像它是本机PHP函数一样。那你就不用担心流了。