Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP客户端和Java服务器之间的客户端-服务器网络_Java_Php_Architecture_Client - Fatal编程技术网

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

PHP客户端和Java服务器之间的客户端-服务器网络,java,php,architecture,client,Java,Php,Architecture,Client,我有一个大学项目,已经完成了99%。它由网站(PHP)和桌面(Java)两部分组成 人们在网站上有自己的账户,他们希望查询关于账户的不同信息。他们发送一条短信,由查询网站数据库(MySQL)的桌面应用程序接收,并相应地发送回复。这个部件工作得很好。问题是,有时网站希望指示桌面应用程序向特定号码发送特定短信。显然,除了把所有的负载都放到DB服务器上,似乎没有别的办法。。。我就是这样做的。网站将SMS作业放在特定的表中。Java应用程序一次又一次地轮询这个表,如果它找到一个作业,它就会执行它。即使这

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

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

我可以想到的另一种方法是使用client-server one。我尝试制作Java server及其PHP客户端。这样,每当发送短信时,网站就会打开一个到桌面应用程序的套接字连接,并发送两个字符串(cell#和SMS message)。不幸的是,我无法做到这一点。我成功地制作了一台Java服务器,当通过Java客户端连接时,该服务器工作正常。同样,我的PHP客户端正确地连接到PHP服务器,但当我尝试交叉它们时,它们开始相互憎恨…PHP没有显示错误,但Java在尝试读取标头时会发出StreamCorruptedException输入流的数量

有人能告诉我,我可以尝试让PHP客户端和Java服务器一起工作吗?或者,如果上述目的可以通过其他方式实现,如何实现

问候,,
Yasir

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

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

等等……您使用的是对象流吗?根据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
      }

等等……您正在使用对象流吗?根据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
      }

使用StreamCorruptedException(字符串原因)并告诉我们消息是什么,我将在晚上回到笔记本电脑时执行此操作。现在我远离它。但它类似于'corrupted header:xxxxx'。谢谢使用StreamCorruptedException(字符串原因)告诉我们消息是什么,我会在晚上回到我的笔记本电脑时做这件事。现在我离它不远了。它有点像“损坏的头:xxxxx”。谢谢,所以Quercus是一个web服务器。这意味着:1.我的项目需要在运行Quercus而不是Apache或IIS的服务器上运行。2.web和deskt都需要op应用程序需要在一台机器上运行。这两个问题可能会再次让它无法接受。如果我错了,请纠正我。另外,感谢您的快速回复。您提到您尝试了java服务器和php服务器,Quercus将两者合一(它是免费的,就像Apache一样)。与Quercus服务器连接时,您的PHP和Java客户端都应该可以正常工作。Quercus应该解决“跨越它们”的问题。不确定您所说的#2是什么意思。可能是我的问题或评论不够清楚。我想说的是,我有一个PHP应用程序(网站)和一个用Java编写的桌面应用程序。现在这个软件包是为非技术、商业类型的用户提供的。他/她希望在pc上运行Java桌面应用程序,并通过使用任何通用web主机提供的主机联机运行网站。很明显,主机通常使用的web服务器是Apache或IIS。因此,如果我将用户绑定到使用quercus,它将是一个缺点和我的uni不会接受。第2点意味着用户必须在一台机器上托管网站和桌面应用程序,这是不需要的。当你说你制作了一个“java服务器”,我假设您不局限于普通的Apache/IIS。大多数托管提供商不支持基本层上的java。嗯,因此Quercus是一个web服务器。这意味着:1.我的项目需要在运行Quercus的服务器上运行,而不是在Apache或IIS上运行。2.web和桌面应用程序都需要在一台机器上运行。这些是有两个问题可能会再次让人无法接受。如果我错了,请纠正我。另外,感谢您的快速回复。您提到您尝试了java服务器和php服务器,Quercus将同时提供这两个服务器(它是免费的,就像Apache一样)。与Quercus服务器连接时,您的PHP和Java客户端都应该可以正常工作。Quercus应该解决“跨越它们”的问题。不确定您所说的#2是什么意思。可能是我的问题或评论不够清楚。我想说的是,我有一个PHP应用程序(网站)和一个用Java编写的桌面应用程序。现在这个软件包是为非技术、商业类型的用户提供的。他/她希望在pc上运行Java桌面应用程序,并通过使用任何通用web主机提供的主机联机运行网站。很明显,主机通常使用的web服务器是Apache或IIS。因此,如果我将用户绑定到使用quercus,它将是一个缺点,我的大学不会接受。第2点意味着用户必须