socket 通信
来源:互联网 发布:淘宝买二手苹果6 编辑:程序博客网 时间:2024/05/21 21:49
<?phpecho "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.phpif($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?>");