浅析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 相关文章推荐
PHP 高手之路(三)
Oct 09 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
php 不同编码下的字符串长度区分
Sep 26 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 PHP
php使用正则验证中文
Apr 06 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
php7下的filesize函数
Sep 30 PHP
PHP调用接口API封装的例子
Oct 11 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多维数组元素操作类的方法
2016/11/14 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
让textarea自动调整大小的js代码
2011/04/12 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
js实现简易ATM功能
2020/10/27 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
python实现的阳历转阴历(农历)算法
2014/04/25 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
通过实例了解python property属性
2019/11/01 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
优秀应届毕业生自荐信
2013/11/16 职场文书
销售会计岗位职责
2014/03/15 职场文书
青年安全生产示范岗事迹材料
2014/05/04 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
学校隐患排查制度
2015/08/05 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
入党申请书格式
2019/06/20 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android