使用tcp / ip php将数据推送到webserver

时间:2015-05-13 07:33:49

标签: php tcp

<?php
error_reporting(~E_NOTICE);
set_time_limit (0);

$address = ""; //ip here
$port = ; //port number  here
$max_clients = 10;

if(!($sock = socket_create(AF_INET, SOCK_STREAM, 0)))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Couldn't create socket: [$errorcode] $errormsg \n");
}

echo "Socket created \n";

// Bind the source address
if( !socket_bind($sock, $address , 5000) )
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Could not bind socket : [$errorcode] $errormsg \n");
}

echo "Socket bind OK \n";

if(!socket_listen ($sock , 10))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Could not listen on socket : [$errorcode] $errormsg \n");
}

echo "Socket listen OK \n";

echo "Waiting for incoming connections... \n";

//array of client sockets
$client_socks = array();

//array of sockets to read
$read = array();

//start loop to listen for incoming connections and process existing connections
while (true) 
{
    //prepare array of readable client sockets
    $read = array();

    //first socket is the master socket
    $read[0] = $sock;

    //now add the existing client sockets
    for ($i = 0; $i < $max_clients; $i++)
    {
        if($client_socks[$i] != null)
        {
            $read[$i+1] = $client_socks[$i];
        }
    }

    //now call select - blocking call
    if(socket_select($read , $write , $except , null) === false)
    {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);

        die("Could not listen on socket : [$errorcode] $errormsg \n");
    }

    //if ready contains the master socket, then a new connection has come in
    if (in_array($sock, $read)) 
    {
        for ($i = 0; $i < $max_clients; $i++)
        {
            if ($client_socks[$i] == null) 
            {
                $client_socks[$i] = socket_accept($sock);

                //display information about the client who is connected
                if(socket_getpeername($client_socks[$i], $address, $port))
                {
                    echo "Client $address : $port is now connected to us. \n";
                }

                //Send Welcome message to client
                $message = "Welcome to php socket server version 1.0 \n";
                $message .= "Enter a message and press enter, and i shall reply back \n";


                socket_write($client_socks[$i] , $message);
                break;
            }
        }
    }

    //check each client if they send any data
    for ($i = 0; $i < $max_clients; $i++)
    {
        if (in_array($client_socks[$i] , $read))
        {
            $input = socket_read($client_socks[$i] , 1024);

            if ($input == null) 
            {
                //zero length string meaning disconnected, remove and close the socket
                unset($client_socks[$i]);
                socket_close($client_socks[$i]);
            }

            $n = trim($input);

            $output = "OK ... $input";

            echo "Sending output to client \n";

            //send response to client
            socket_write($client_socks[$i] , $output);
        }
    }
}
?>
我使用上面的代码用tcp / ip来沟通客户端机器,通讯过程工作正常,我能读写客户端输入的数据,现在我想将客户端输入的数据输入到webserver(数据库)并存入数据库使用php并将数据显示到浏览器中,我该怎么办?任何帮助表示赞赏..

1 个答案:

答案 0 :(得分:0)

因此,我们承认您的数据库包含一个存储您所有输入的表。该表可以命名为“inputs”,由一个主键组成,例如“idInput”(int auto increment)和一个名为“input”的经典文本字段

您可以做的是,在接收新输入的地方,将其存储在此新表中。这就是为什么,首先,您需要通过PHP进行数据库连接。我们来使用PDO:

try{
   $PDO = new PDO('mysql:host=localhost;dbname=mydatabase','root','');
   $PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
   $PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);
}catch(PDOException $e){
   exit ('Connection failed');
}

然后,就在

之后
$n = trim($input);
你可以做点什么:

$req = $PDO->prepare("INSERT INTO inputs(input) VALUES (:input)");
        $req->execute(array(
            "input" => $PDO->quote($input),
            ));