浅析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 相关文章推荐
利用js调用后台php进行数据处理原码
Oct 09 PHP
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
用PHP制作的意见反馈表源码
Mar 11 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
MySql数据库查询结果用表格输出PHP代码示例
Mar 20 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
php批量删除操作代码分享
Feb 26 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 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 fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
cookie中的path与domain属性详解
2013/12/18 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
python3编写C/S网络程序实例教程
2014/08/25 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
Android面试宝典
2013/08/06 面试题
介绍一下write命令
2012/09/24 面试题
暑期教师培训方案
2014/06/07 职场文书
出国签证在职证明
2014/09/20 职场文书
结婚保证书
2015/01/16 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
英语演讲开场白
2015/05/29 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
小学四年级作文之写景
2019/08/23 职场文书