热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHPsocket,server,cient,模拟post-PHP源码

ec(2); fsockopen以socket方式打开一个连接我最常用的是模拟post这个是小李挖掘的到的...不错至于要模拟get方式....直接file_get_content就行了.代码见后面 stream_socket_client,代码见后面这个和fsockopenfsockopen一样.以socket方式打开一个连接,只是参数不同&nb

fsockopen

socket方式打开一个连接

我最常用的是模拟post

这个是小李挖掘的到的...不错

至于要模拟get方式....直接file_get_content就行了.

代码见后面

stream_socket_client, 代码见后面

这个和fsockopenfsockopen一样.socket方式打开一个连接,只是参数不同

stream_socket_server

建立一个socket server, 代码见后面

如果是建立的是tcpserver 就用stream_socket_accept进行通讯

如果是建立的是udpserver 就用stream_socket_recvfromstream_socket_sendto进行通讯,而且stream_socket_server中需要加个参数STREAM_SERVER_BIND

还有个socket扩展,这个是最基础的建立socket,但是从5.3.0开始就放到pecl中了.

这里就不介绍了.

---------------------------- stream_socket client---------------------------

/**

* @name test.php

* @date Sun Jan 27 00:49:00 CST 2008

* @copyright 马永占(MyZ)

* @author 马永占(MyZ)

* @link http://blog.111cn.net/mayongzhan/

*/

$xport = "tcp";

$port = "8001";

$ip = "127.0.0.1";

$address = "{$xport}://{$ip}:{$port}";

$fp = stream_socket_client($address, $errno, $errstr, 1);

if (!$fp) {

echo "$errstr ($errno)
";

} else {

fwrite($fp, " ");

echo fread($fp, 1024);

fclose($fp);

}

?>

---------------------------- streamSocketServer---------------------------

/**

* @name test2.php

* @date Sun Jan 27 00:45:57 CST 2008

* @copyright 马永占(MyZ)

* @author 马永占(MyZ)

* @link http://blog.111cn.net/mayongzhan/

*/

header("Content-type: text/html;charset=utf-8");

//设置不超时.服务端当然不能超时

set_time_limit(0);

//得到可用socket

$xportlist = stream_get_transports();

echo "transports: ";

foreach ($xportlist as $value) {

echo "{$value} ";

}

//定义一些东西

$xport = "tcp";

$port = "8001";

$address = "{$xport}://0.0.0.0:{$port}";

//建立socketserver

if ($xport==''tcp'') {

$socket = stream_socket_server($address, $errno, $errstr);

}

elseif ($xport==''udp'') {

$socket = stream_socket_server($address, $errno, $errstr, STREAM_SERVER_BIND);

}

if (!$socket) {

echo "{$errstr} ({$errno}) ";

}

else {

echo "listening {$xport}:{$port} ... ";

if ($xport==''tcp'') {

//许可一个socket连接,-1超时

while ($cOnn= stream_socket_accept($socket,-1)) {

//得到访问的端口

$peer = stream_socket_get_name($conn,true);

echo "$peer ";

fwrite($conn, ''The local time is '' . date("Y-m-d H:i:s "));

fclose($conn);

}

}

elseif ($xport==''udp'') {

do {

//得到访问的端口

$pkt = stream_socket_recvfrom($socket, 1, 0, $peer);

echo "$peer ";

stream_socket_sendto($socket, date("Y-m-d H:i:s "), 0, $peer);

} while ($pkt !== false);

}

//关闭socket

fclose($socket);

}

?>

---------------------------- fsockopen(post)---------------------------

/**

* @name test.php

* @date Sat Jan 26 23:01:23 CST 2008

* @copyright 马永占(MyZ)

* @author 马永占(MyZ)

* @link http://blog.111cn.net/mayongzhan/

*/

/**

* php 发送POST请求

*

* @param string $url 提交到的地址

* @param array $data 要提交的参数 array(''a''=>'''',''b''=>'''');

* @return string

*/

function virtualPost($url, $data) {

$url = parse_url($url);

if (!$url) return "URL不能解析";

if (!isset($url[''port''])) $url[''port''] = "";

if (!isset($url[''query''])) $url[''query''] = "";

$encoded = "";

while (list($k,$v) = each($data)) {

$encoded .= ($encoded ? "&" : "");

$encoded .= rawurlencode($k)."=".rawurlencode($v);

}

//$fp = stream_socket_client($url[''host''].":".($url[''port''] ? $url[''port''] : 80));

$fp = fsockopen($url[''host''], $url[''port''] ? $url[''port''] : 80);

if (!$fp) return "不能打开到$url[host]的连接";

//发送

fputs($fp, sprintf("POST %s%s%s HTTP/1.0 ", $url[''path''], $url[''query''] ? "?" : "", $url[''query'']));

fputs($fp, "Host: $url[host] ");

fputs($fp, "Content-type: application/x-www-form-urlencoded ");

fputs($fp, "Content-length: " . strlen($encoded) . " ");

fputs($fp, "Connection: close ");

fputs($fp, "$encoded ");

//接受

$line = fgets($fp,1024);

if (!eregi("^HTTP/1.. 200", $line)) return "返回结果错误";

//滤掉空行

$results = "";

$inheader = 1;

while(!feof($fp)) {

$line = fgets($fp,1024);

//把剩余的头信息过滤掉

if ($inheader && ($line == " " || $line == " ")) {

$inheader = 0;

}elseif (!$inheader) {

$results .= $line;

}

}

fclose($fp);

return $results;

}

echo virtualPost(''http://127.0.0.1/test/test2.php'',array(myz=>''马永占''));

?>


推荐阅读
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
author-avatar
邪恶尽头是纯洁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有