首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tcp/ip php向tcp服务器推送数据

使用tcp/ip php向tcp服务器推送数据
EN

Stack Overflow用户
提问于 2015-05-13 15:33:49
回答 1查看 1K关注 0票数 0
代码语言:javascript
复制
<?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与客户端机器通信,通信过程运行良好,我可以读取和写入客户端输入的数据,现在我想推送客户端输入的数据到now服务器(数据库)中,并使用php存储到数据库中,并在浏览器中显示该数据,我该怎么办?感谢任何帮助..

EN

回答 1

Stack Overflow用户

发布于 2015-05-13 16:08:10

因此,让我们承认您的数据库包含一个存储所有输入的表。此表可以命名为"input“,并由主键(如"idInput”(整型自动增量))和名为“input”的经典文本字段组成。

您可以做的是,在接收新输入的位置,将其存储在这个新表中。这就是为什么首先需要一个通过PHP的数据库连接。让我们使用PDO:

代码语言:javascript
复制
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');
}

然后,紧接着

代码语言:javascript
复制
$n = trim($input);

你可以这样做:

代码语言:javascript
复制
$req = $PDO->prepare("INSERT INTO inputs(input) VALUES (:input)");
        $req->execute(array(
            "input" => $PDO->quote($input),
            ));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30208459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档