浅析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 simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
php获取文件内容最后一行示例
Jan 09 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
Jun 25 PHP
php正则匹配html中带class的div并选取其中内容的方法
Jan 13 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
php实现评论回复删除功能
May 23 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
php截取中文字符串函数实例
2015/02/23 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
python检测服务器是否正常
2014/02/16 Python
python用字典统计单词或汉字词个数示例
2014/04/22 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
Python常见数据类型转换操作示例
2019/05/08 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
python画环形图的方法
2020/03/25 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
印度购物网站:TATA CLiQ
2017/11/23 全球购物
单位人事专员介绍信
2014/01/11 职场文书
学校募捐倡议书
2014/05/14 职场文书
教师节活动总结
2014/08/29 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
2016新年问候语大全
2015/11/11 职场文书
《雷雨》教学反思
2016/02/20 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
python中urllib包的网络请求教程
2022/04/19 Python