アイデアは、TCP ソケットを介して PHP Web ページと C プログラムを接続し、Web ページが C プログラムからの接続を待機し、接続が確立されるとすぐにデータを受信することです。PHP ソケット接続とデータ受信のコードは次のとおりです。
PHP (socketRead.php):
$address = 'localhost';
$port = 5001;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "Socket creation error";
}
else {
echo "Socket created <br/>";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "Host/port connection failed";
}
else {
echo "Host/port connection successful <br/>";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "Socket error";
}
else {
echo "Waiting connection <br/>";
}
if (($msgsock = socket_accept($sock)) < 0) {
echo "Socket connection start error";
} else {
echo "Awaiting data <br/>";
}
//Connection established, reading data
if (false === ($buf = socket_read($msgsock, 1024))) {
echo "Read error";
} else {
echo "Data: ".$buf;
}
if (isset($sock)) {
socket_close($ret);
socket_close($sock);
}
echo "<br /> Socket closed";
ソケットから動的にデータを読み取るには、jquery リクエストを使用します。
Javascript (index.html):
function update_content() {
var request = $.get("socket/socketRead.php");
request.success(function(result) {
document.write(result);
});
}
update_content();
データを繰り返し読み取るために間隔を追加しようとするまではうまくいきました。
Javascript (index.html):
var timer = setInterval(function(){update_content();}, 1000);
最初の接続/受信は引き続き機能しますが、再度接続しようとすると C プログラムで「接続が拒否されました」と表示されます。この問題で私を助けてくれますか?