Я подключаюсь к серверу, написанному на JAVA, используя TCP / IP. Мое приложение отправляет массивы json на этот сервер и в некоторых случаях также ожидает некоторые результаты, массивы json. Проблема в том, что я могу легко отправить json через tcp, но при его чтении скрипт останавливается, ожидая вечно, пока не истечет время ожидания.
Вот мой код.
$sock = socket_create(AF_INET, SOCK_STREAM, 0) //Creating a TCP socket
or die("error: could not create socket\n");
$succ = socket_connect($sock, Application_Model_Config::serverHost, Application_Model_Config::serverPort) //Connecting to to server using that socket
or die("error: could not connect to host\n");
socket_write($sock, $send.'\n', strlen($send)+1);
$response = '';
while ($resp = socket_read($sock, 1024)) {
if (!$resp)
break;
$response .= $resp;
if (strpos($resp, "\n") !== false)
break;
}
echo "Server said: {$response}";
}
$ send - это массив, закодированный как json_encode ($ array).
Отправка в порядке, но при необходимости я ничего не получаю.
Я не возражаю против этого, используя jquery (отправка и получение объектов json с сервера), если это будет возможно. Я не знаю ни о какой реализации, которая достигает чего-то подобного, но я открыт для предложений ... на самом деле предпочел бы это вместо php.