君山 发表于 2020-5-9 19:12:47

分享,php模拟socket一次连接,多次发送数据的实现


<?php
//post.php
function Post($host,$port)
{
        //$host="127.0.0.1";
        //建立连接
        $conn = fsockopen($host,$port);
        if (!$conn)
        {
                die("Con error");
        }
        //循环发送5次数据
        //
        for($i = 0;$i<5;$i++)
        {
                $data="user_name=admin".$i;
                WriteData($conn,$host,$data);
                echo $i."<br />";
        }
       
        fclose($conn);
}

function WriteData($conn,$host,$data)
{
        $header = "POST /test.php HTTP/1.1\r\n";
        $header.= "Host : {$host}\r\n";
        $header.= "Content-type: application/x-www-form-urlencoded\r\n";
        $header.= "Content-Length:".strlen($data)."\r\n";
        //Keep-Alive是关键
        $header.= "Connection: Keep-Alive\r\n\r\n";       
        $header.= "{$data}\r\n\r\n";
       
        fwrite($conn,$header);
       
        //取结果
        //$result = '';
        //while(!feof($conn))
        //{
       //   $result .= fgets($conn,128);
        //}
        //return $result;
}

Post('127.0.0.1',80);
       
?>




<?php
        //test.php
        $fp = fopen('result.txt','a');
        $data = $_POST['user_name']." -- ". date('Y-m-d H:i:s')."\r\n";
        fwrite($fp,$data);
        fclose($fp);
?>


没什么技术难度
脑子一下子没转过来,每发一次都要建连接的方式太耗资源。用这种方式一次连接后,可以发多次数据,不过连接好像最长不超过30秒,不知道是哪里限制的。
页: [1]
查看完整版本: 分享,php模拟socket一次连接,多次发送数据的实现