没事的时候自己封装了一个socket类

功能非常easy和curl功能是一样的

class socketClass{
private $host;
private $url;
private $error_no = 0;
public $error_str = '';
private $port = 80;
private $timeout = 5;
private $method;
private $param;
private $fp;
private $content = '';
private $header = array();
public function __construct($host, $port, $url, $param, $method='GET', $timeout=5) {
$this->host = $host;
$this->port = $port;
$this->url = $url;
$this->timeout = $timeout;
$this->method = $method;
if(is_array($param)){
$this->param = http_build_query($param);
}else{
$this->param = $param;
}
}
private function connect(){
$this->fp = fsockopen($this->host, $this->port, $this->error_no, $this->error_str, $this->timeout);
if(!$this->fp){
$this->error_str = 'socket connect failed';
return false;
}
return true;
}
private function send(){
$this->fp = '';
if(!$this->connect()){
$this->error_str = 'connect socket failed';
return false;
}
if($this->method == 'POST'){
$header = "POST $this->url HTTP/1.1\r\n";
}else{
if(!empty($this->param)){
$header = "GET $this->url?$this->param HTTP/1.1\r\n";
}else{
$header = "GET $this->url HTTP/1.1\r\n";
}
}
$header .= "Content-Length:" . strlen($this->param) . "\r\n";
$header .= "Host:$this->host:$this->port\r\n";
$header .= "Content-Type:application/x-www-form-urlencode\r\n";
$header .= "Connection:close\r\n\r\n";
if($this->method == 'POST'){
$header .= "$this->param\r\n\r\n";
}
if(!empty($this->header)){
foreach ($this->header as $key=>$val){
$tmep = urlencode($val);
 $header .= "$key:$temp\r\n";
}
}
fwrite($this->fp, $header);
while(!feof($this->fp)){
$this->content .= fread($this->fp, 1024);
}
fclose($this->fp);
return true;
}
public function getContent(){
if(!$this->send()){
return false;
}
$pos = strpos($this->content, "\r\n\r\n");
$this->content = substr($this->content, $pos);
return $this->content;
}
public function setHeader($key, $val){
$this->header[$key] = $val;
}
public function getErrorStr(){
return $this->error_str;
}
}
$host = 'localhost';
$port = 81;
$url = 'http://localhost/phpdemo/php/socket_accept.php';
$param = array('username'=>'beggar', 'passwd'=>'20060400');
$method = 'GET';
$timeout = 10;
$http = new socketClass($host, $port, $url, $param, $method, $timeout);
$http->setHeader('referer', $url);
$http->setHeader('Accept', '*/*');
$header = $http->getContent();
echo $header;

PHP socket类的更多相关文章

  1. ServerSocket与Socket类

    ServerSocket与Socket类 TCP套接字协议: TCP最主要的特征就是能够建立长时间的连接,而且能够保证数据安全的送达,但是速度比较慢.使用TCP进行连接的时候会有三次握手,之后才建立起 ...

  2. Socket类 以及 ServerSocket类 讲解

    Socket类 套接字是网络连接的端点,套接字使应用可以从网络中读取数据,可以向网络中写入数据.不同计算机上的两个应用程序可以通过连接发送或接收字节流,以此达到相互通信的目的. 为了从一个应用程序向另 ...

  3. socket系列之客户端socket——Socket类

    假设TCP套接字服务器端已经建立好并正在监听客户端的连接了,那么客户端就可以通过Socket类来发起连接.客户端发起一个连接请求后,就被动地在等待服务器的响应.这个类同样位于java.net包中,包含 ...

  4. Socket 类

    构造函数       名称 说明 Socket(AddressFamily, SocketType, ProtocolType) 新实例初始化 Socket 类使用指定的地址族. 套接字类型和协议. ...

  5. java网络编程ServerSocket类 和Socket类的常用构造方法及其方法

    Socket类Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号.Socket(String host, int po ...

  6. 详解 ServerSocket与Socket类

    (请观看本人博文 -- <详解 网络编程>) 目录 ServerSocket与Socket ServerSocket 类: Socket类: ServerSocket与Socket 首先, ...

  7. 【Android编程】Java利用Socket类编写Metasploit安卓载荷辅助模块

    /作者:Kali_MG1937 CSDN博客:ALDYS4 QQ:3496925334/ 注意!此文章被作者标记到 黑历史 专栏中,这意味着本篇文章可能存在 质量低下,流水账文,笔法低质 的问题 为了 ...

  8. 编写Java程序,使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的场景(用户充当客户端,QQ 小冰充当服务端)

    查看本章节 查看作业目录 需求说明: 小冰是微软公司研发的人工智能机器人,被腾讯公司加入 QQ 群后,立即受到千万网友的喜爱.现在使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的 ...

  9. 解决Docker运行命令时提示"Got permission denied while trying to connect to the Docker daemon socket"类情况

    Docker安装命令: 解决Docker运行命令时提示"Got permission denied while trying to connect to the Docker daemon ...

随机推荐

  1. Codeforces Round #256 (Div. 2) 题解

    Problem A: A. Rewards time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. 分分钟教会你使用HTML写Web页面

    在学习怎样使用HTML编写网页之前,我们必须先搞清楚什么是HTML?当然了不是系统的给大家介绍HTML的前世今生,假设对其身世感兴趣的小伙伴能够去问度娘,她会给你想要的答案. 所谓HTML,就是我们常 ...

  3. alv 显示 汇总数据

    alv中有 字段设置 gs_fieldcat-do_sum = ‘1’.字段  用于控制汇总

  4. [置顶] Embedded Server:像写main函数一样写Web Server

    1.传统的JEE Web Server 传统的JEE中,如果我们想要部署一个Web Application,我们需要首先安装一个Container Server,如JBoss,WebLogic,Tom ...

  5. io端口

    io端口 ***********************************************************   io端口设备访问流程为 --------------------- ...

  6. 新手推荐:IIS+PHP+MYSQL环境配置教程

    本文介绍刚开始接触php的朋友如何为自己的服务器配置php环境 首先我们要的工具: 1.IIS:这个当然是不能少的了,用系统自带的就好了,这里就不教大家怎么装了. 2.PHP:php-5.2.0-wi ...

  7. form不提交问题

    var confirmOrderForm=document.getElementById("confirmOrderForm"); var url="${pageCont ...

  8. UVa 10286 - Trouble with a Pentagon

    题目:如图在正五边形中画一个正方形,一直正五边形边长,求正方形边长. 分析:计算几何,解析几何.求出边长的比例关系带入求解就可以. 设正五边形边长为1,在顶点建立直角坐标系,则左上角坐标为:B(-co ...

  9. 事件总线帧---Otto

    我们如果这样一种业务场景.如今在做一款及时聊天应用,我们在聊天页面进行收发信息.同一时候也要实时更新前一页面的聊天记录,这时我们该怎样去实现?说说我曾经的实现策略.我使用的是广播接收器BroadCas ...

  10. [Cocos2d-x]随机数

    Cocos2d-x为我们提供了生成随机数的宏:CCRANDOM_0_1() 具体定义如下: /** @def CCRANDOM_0_1 returns a random float between 0 ...