浅析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截取中文字符串的问题
Jul 12 PHP
目录,文件操作详谈―PHP
Nov 25 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
php stream_get_meta_data返回值
Sep 29 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
php防止sql注入的方法详解
Feb 20 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 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连mysql和oracle数据库性能比较
2006/10/09 PHP
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
PHP伪静态写法附代码
2008/06/20 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
Python中的ConfigParser模块使用详解
2015/05/04 Python
python删除列表内容
2015/08/04 Python
python中eval与int的区别浅析
2019/08/11 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
Python continue语句实例用法
2020/02/06 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
学生会个人自荐书范文
2014/02/12 职场文书
个人投资合作协议书
2014/10/12 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
老公保证书
2015/01/17 职场文书
教师节校长致辞
2015/07/31 职场文书
改造DE1103三步曲
2022/04/07 无线电
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python