Я пытаюсь установить связь между страницей 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 ничего не печатает.
В чем может быть проблема?
Заранее спасибо.
P.S. Вероятно, стоит сказать, что я захожу на эту веб-страницу через AJAX, поэтому она «повторяет» результат на другой странице.