<?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?>");