socket 通信

<?php
echo "DATA1:".strtotime("now")."<br/>";
/**
 * 客服端发送post流数据的请求
 */
  
//对数据进行封包
function parkByArr($arr){
    $atArr = array();
    foreach ($arr as $k => $v){
        $atArr[]=pack($v[0], $v[1]);
    }
    return $atArr;
}

//c/c++也可以按照这种格式打包数据
$format = array(
  "username"   => array("A1024",'除来源署名为重庆晨报、重庆晨网稿件外,本文为网站转载稿件,内容与重庆晨报见报稿件无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
'),'password'=>array("A1024","qiucarson")

);

//各个数据之间以\0分割连成字符串
$stream = implode("#$#",parkByArr($format));
echo $stream;
$http_entity_body = $stream;                                  //要发送的数据
$http_entity_type = 'application/x-www-from-urlencoded';      //发送的格式
$http_entity_length = strlen($http_entity_body);
$host = '192.168.0.25';                                          //数据发送ip
$port = '80';                                                 //端口
$path = '/phpinput_server.php';                              //发送的url,注意要带上路径啊,我这里两个文件都在根目录,所以不影响
$fp = fsockopen($host, $port, $error_no, $error_desc, 30);    //开启socket

//发送post请求给url: phpinput_server.php
if($fp) {
	$d='';
    fputs($fp, "POST {$path} HTTP/1.1\r\n");
    fputs($fp, "HOST: {$host}\r\n");
    fputs($fp, "Content-type: {$http_entity_type}\r\n");
    fputs($fp, "Content-Length: {$http_entity_length}\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $http_entity_body."\r\n\r\n");
    while(!feof($fp)) {
        $d.= fgets($fp, 4096);    
    }
    fclose($fp);
	
		echo "DATA2:".strtotime("now")."<br/>";
	
    echo $d;
    
}


?>

<?php
/**
 *   服务端接受客服端post过来的数据(流数据)
 */
  

//根据包的格式解包地址
function unparkByArr($post_str,$format){
    $Arr   = explode("#$#",$post_str);     //post数据是以\0分割的
    $atArr = array();
    $i = 0;
	foreach($format as $k=>$v){
        $tmp = unpack($v[0],$Arr[$i]);
        $atArr[$k] = $tmp[1];
        $i++;
    }
    return $atArr;
}

//解包的格式,和打包的格式一致
$format = array(
  "username" => array("A1024"),
"password"=>array("A1024")
);

//接受post请求
$post_data = file_get_contents('php://input', 'r');

//解包操作
$post_data = unparkByArr($post_data,$format);     

//写入文件方便查看
file_put_contents('text.php', "<?php \n\$package=".var_export($post_data, ',')."\n?>");



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值