TCP/IP を使用して Java で記述されたサーバーに接続しています。私のアプリケーションは json 配列をこのサーバーに送信し、場合によっては、json 配列の結果も予期します。問題は、tcp経由でjsonを簡単に送信できることですが、それを読み取ると、スクリプトがフリーズし、タイムアウトするまで永遠に待機します。これが私のコードです。
$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の代わりにそれを好むでしょう.