【发布时间】:2011-05-09 03:32:16
【问题描述】:
我正在尝试在 PHP 页面和正在运行的 Java 服务器之间进行通信。 只是通过套接字进行简单的字符串交换。
这是我处理连接的线程的 Java 代码:
InputStream in = clientSocket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
String request;
if((request=br.readLine())!=null){
System.out.println("got the following request: " + request);
out.write(request +"\n");
out.flush();
out.close();
in.close();
}
我使用简单的 Java 客户端对其进行了测试,该客户端发送字符串然后接收结果并将其打印回来并且它工作正常。客户端和服务器都有相同的输出。
这是我的 PHP 代码:
$fp = @fsockopen ($host, $port, $errno, $errstr);
if($fp){
fputs($fp, $str);
//echo fgets($fp);
}
close($fp);
它将字符串发送到服务器,服务器接收它。 但是,一旦我用 fgets($fp) 取消注释该行,我就会被阻止,直到 1-2 分钟后发生某种超时。在那块期间,我的服务器没有收到任何东西。 超时后,我的服务器打印,它已收到该行,并且可能会发回响应,但是,PHP 代码不打印任何内容。
可能是什么问题?
提前谢谢你。
附:值得一提的是,我正在通过 AJAX 访问此网页,因此它会将结果“回显”回其他页面。
【问题讨论】: