浅析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下过滤HTML代码的函数
Dec 10 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
php实现图片等比例缩放代码
Jul 23 PHP
php实现zip文件解压操作
Nov 03 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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学习笔记 数组的常用函数
2011/06/13 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
python类继承用法实例分析
2015/05/27 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
python打包生成so文件的实现
2020/10/30 Python
银行会计职员个人的自我评价
2013/09/29 职场文书
求职自荐信格式
2013/12/04 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
单位领导证婚词
2014/01/14 职场文书
暑期教师培训方案
2014/06/07 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技
Vue Element plus使用方法梳理
2022/12/24 Vue.js