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