浅析PHP Socket技术


Posted in PHP onAugust 02, 2013

phpsocketSocket位于TCP/IP协议的传输控制协议,提供客户-服务器模式的异步通信,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的反馈或服务!我练习了一个最基本的例子:

使用并发起一个阻塞式(block)连接,即服务器如果不返回数据流,则一直保持连接状态,一旦有数据流传入,取得内容后就立即断开连接。代码如下:

<?php
$host = www.sohu.com; //这个地址随便,用新浪的也行,主要是测试用,哪个无所谓
$page = "/index.html";
$port = 80;
$request = "GET $page HTTP/1.1\r\n";
$request .= "Host: $host\r\n";
//$request .= "Referer:$host\r\n";
$request .= "Connection: close\r\n\r\n";
//允许连接的超时时间为1.5秒
$connectionTimeout = 1.5;
//允许远程服务器2秒钟内完成回应
$responseTimeout = 2;
//建立一个socket连接
$fp = fsockopen($host, $port, $errno, $errstr, $connectionTimeout);
if (!$fp) {
    throw new Exception("Connection to $hostfailed:$errstr");
} else {
    stream_set_blocking($fp, true);
    stream_set_timeout($fp, $responseTimeout);
}
//发送请求字符串
fwrite($fp, $request);
//取得返回的数据流内容
$content = stream_get_contents($fp);
echo $content;
$meta = stream_get_meta_data($fp);
if ($meta['timed_out']) {
    throw new Exception("Responsefrom web services server timed out.");
}
//关闭Socket连接
fclose($fp);
?>
PHP 相关文章推荐
smarty 原来也不过如此~~呵呵
Nov 25 PHP
PHP 5.0 Pear安装方法
Dec 06 PHP
快速开发一个PHP扩展图文教程
Dec 12 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
php中的路径问题与set_include_path使用介绍
Feb 11 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP内存使用情况如何获取
Oct 10 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 PHP
Laravel配合jwt使用的方法实例
Oct 25 PHP
php中如何防止表单的重复提交
Aug 02 #PHP
浅析51个PHP处理字符串的函数
Aug 02 #PHP
php中的常用魔术方法总结
Aug 02 #PHP
深入解析Session是否必须依赖Cookie
Aug 02 #PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 #PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 #PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 #PHP
You might like
php 网上商城促销设计实例代码
2012/02/17 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
jQuery中读取json文件示例代码
2013/05/10 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
python更改已存在excel文件的方法
2018/05/03 Python
python读取各种文件数据方法解析
2018/12/29 Python
python3实现逐字输出的方法
2019/01/23 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
企划经理的岗位职责
2013/11/17 职场文书
个人实用的自我评价范文
2013/11/23 职场文书
优秀演讲稿范文
2013/12/29 职场文书
咖啡蛋糕店创业计划书
2014/01/28 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
文秘自荐信
2014/06/28 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
培训师岗位职责
2015/02/14 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
浅谈MySQL中的六种日志
2022/03/23 MySQL