用PHP模拟服务器返回任意类型数据

作为测试开发人员,测试的时候经常需要测试网络数据内容,也就需要模拟服务器返回各种特殊的数据区检验客户端功能正确定、稳定性等等,下面就总结一点模拟服务器返回数据的方法,由于PHP很好用,所以选择了它,当然C++、Python等等也挺好的,PHP下载地址:http://windows.php.net/download/

 

如果仅仅返回一个字符串,非常简单,用PHP的输出echo就哦了:

这个是最简单的,江读取到的数据直接返回:

Server.php:

 

 

 

但是有时候需要返回数据流,而不是字符串,比如返回数字等等,哪, 使用echo就不行了,它输出的是字符串,数字总是会变成字符而导致不是希望的大小,对PHP用的不是特别熟悉,这个困扰了我一些时间,但是由于PHP比较灵活,还是坚持找一下相关内容,phpbuffer是一个开源的PHP网络处理类库,写的很棒,源码地址是:

http://code.google.com/p/phpbuffer/ ,具体自己看下。

将里边的内容取出来用,就可以实现我们需要的内容:


Lca.php:

<?php

set_time_limit(0);

$ip = '10.129.41.125';

$port = 80;

 

if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) 

{

    echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";

}

 

if(($ret = socket_bind($sock,$ip,$port)) < 0) 

{

    echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";

}

 

if(($ret = socket_listen($sock,4)) < 0) 

{

    echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";

}

 

$count = 0;

 

do 

{

    if (($msgsock = socket_accept($sock)) < 0) 

{

        echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";

        break;

    } 

else 

{

//服务器端显示一下收到的信息

    echo "测试成功了啊\n";

        $buf = socket_read($msgsock,1024);//最多显示1024长度的就行了

$talkback = "收到的信息:$buf\n";

        echo $talkback;


//发送数据

$post  = pack ( 'N', 0x08000000 );

$post .= pack ( 'N', 0x00000000 );

$post .= pack ( 'N', 0x06000000 );

 



//发送信息协议头

$header = "HTTP/1.1 200 OK\r" . "\n";  

// $header .= "Host: localhost\r" . "\n";  

$header .= "Accept-Ranges:none" . "\n";  

$header .= "Server:nginx/1.4.1\r" . "\n";  

$header .= "Content-Length: ". strlen($post) . "\r\n";  

$header .= "Content-Type: text/html\r" . "\n";  

$header .= "Connection:keep-alive\r" . "\n";  

$header .= "\r\n"; 



//发送出去......

$data = $header . $post;

        socket_write($msgsock, $data, strlen($data));

    }

    socket_close($msgsock);

 

} while (true);

 

socket_close($sock);

?>

安装PHP就不说了,在这里下载: http://windows.php.net/download/  

然后将安装路径下的php.exe所在的目录添加到系统环境变量里边去:

 

启动命令行,使用php 启动刚才写的服务端脚本:

 

 

 

激活数据发送请求,看下服务器反应:



服务器发回的数据是:

0x08000000

0x00000000

0x06000000

看下客户端收到的数据:

 

 使用还是很给力的


参考:

PHP SOCKET编程

php中用socket模拟http

PHP pack() 函数

php http请求的三种方法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值