2

ここでは、クライアントからサーバーにメッセージを渡し、サーバープログラムを介してクライアントに応答を書き戻したいと思います。実際、私はデータベースをサーバー側に保持し、クライアントの入力に従ってデータをクライアントに送り返そうとしています。クライアントからサーバーへの送信部分とサーバーからのデータの取得は問題ありません。応答としてクライアントに書き戻すアイデアが欲しい

これが私のサーバープログラムです

<html>
    <head>

    </head>

    <body>
        <?php
            //socket_close($sock);
            $isread=false;
            $address="127.0.0.1";
            $port="1332";
            $sock=socket_create(AF_INET,SOCK_STREAM,0) or die("Socket creation failed..!");
            socket_bind($sock,$address,$port) or die("Socket binding failed..!");
            socket_listen($sock) or die("Socket listen failed..!");
            $accept=socket_accept($sock) or die("Socket accept failed..!");
            $read=socket_read($accept,1024);
            //echo $read;
            if($read)
                $isread=true;
            $ar=array();
            $ar=explode("@",$read);
            print_r($ar);
            if($isread==true)
                getData('testdata','student',$accept,$ar[0],$ar[1]);

            function getData($dbName,$tblName,$acc,$control,$value)
            {
                mysql_connect('localhost','root','') or die("Connection failed..!");
                mysql_select_db($dbName) or die("Connection failed..!");
                $cmd="SELECT * FROM $tblName WHERE '$control'='$value'";
                $query=mysql_query($cmd) or die("Query execution failed..! ".mysql_error());
                $rows=mysql_num_rows($query);
                $cols=mysql_num_fields($query);
                for($i=0;$i<$rows;$i++)
                {
                    $tbl=mysql_fetch_array($query);
                    for($j=0;$j<$cols;$j++)
                    {
                          socket_write($acc,$tbl[0]+"@");
                    }
                    echo "<br />";
                }
            }
            socket_close($sock);
        ?>
    </body>
</html>

これが私のクライアントプログラムです

<html>
    <head></head>
    <body>
        <form action="myclient.php" method="POST">
            <select name="data">
                <option value="RegNo">RegNo</option>
                <option value="Name">Name</option>
            </select>&nbsp;&nbsp;&nbsp;&nbsp;
            <input type="text" name="mytext"></input>&nbsp;&nbsp;&nbsp;&nbsp;
            <input type="Submit" name="btn"></input>
        </form>
    </body>
</html>

<?php
    $iswrite=false;
    if(isset($_POST['btn']))
    {
        $d=$_POST['data'];
        $s=$_POST['mytext'];
        $address="127.0.0.1";
        $port="1332";
        if(isset($d) && isset($s))
        {
            $sock=socket_create(AF_INET,SOCK_STREAM,0) or die("Cannot create socket");
            $con=socket_connect($sock,$address,$port) or die("Cannot connect to socket");

            socket_write($sock,$d);
            socket_write($sock,"@");
            $write=socket_write($sock,$s);
            if($write)
                $iswrite=true;

            if($iswrite)
            {
                $read=socket_read($sock,1024);
                echo $read;
            }

            socket_close($sock);
        }
    }

アイデアをください。

4

2 に答える 2

4

これが私が試した方法です。

これはサーバーのプログラムです。

<?php
$address="127.0.0.1";
$port="3222";
$sock=socket_create(AF_INET,SOCK_STREAM,0) or die("Cannot create a socket");
socket_bind($sock,$address,$port) or die("Couldnot bind to socket");
socket_listen($sock) or die("Couldnot listen to socket");
$accept=socket_accept($sock) or die("Couldnot accept");
$read=socket_read($accept,1024) or die("Cannot read from socket");
echo $read;
socket_write($accept,"Hello client");
socket_close($sock);
?>

これはクライアントのプログラムです。

<?php
$address="127.0.0.1";
$port="3222";
$msg="Hello server";

$sock=socket_create(AF_INET,SOCK_STREAM,0) or die("Cannot create a socket");
socket_connect($sock,$address,$port) or die("Could not connect to the socket");
socket_write($sock,$msg);

$read=socket_read($sock,1024);
echo $read;
socket_close($sock);
?>

これを試してください。これは問題なく動作します。

于 2013-02-25T13:55:24.750 に答える
-1

PHPは常にサーバーサイドです。クライアント側のコードとして表示しているのは、クライアント側ではなく、サーバー(つまり、サーバー側)で実行されていることです。

Webソケットを操作するには、クライアント側のコードがJavascriptである必要があります。GoogleforWebSocketチュートリアル。

これがあなたが始めるのに良いものです。

于 2013-02-25T11:32:19.317 に答える