浅析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 相关文章推荐
ASP知识讲座四
Oct 09 PHP
php error_log 函数的使用
Apr 13 PHP
PHP 手机归属地查询 api
Feb 08 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
Apr 20 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
Oct 29 PHP
php删除数组元素示例分享
Feb 17 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Jun 25 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
php的socket编程详解
Nov 20 PHP
Smarty3配置及入门语法
Feb 22 PHP
PHP实现计算器小功能
Aug 28 PHP
PHP7 其他语言层面的修改
Mar 09 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
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
PHP引用的调用方法分析
2016/04/25 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
python实现维吉尼亚加密法
2019/03/20 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
应届毕业生个人自荐信范文
2013/11/30 职场文书
大学生求职自我评价
2014/01/16 职场文书
学生会干部自荐信
2014/02/04 职场文书
总会计师岗位职责
2014/02/19 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
租房协议书范例
2014/10/14 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers