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。谷歌网络套接字教程。

这是一个很好的帮助您入门的方法。

于 2013-02-25T11:32:19.317 回答