浅析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 相关文章推荐
新版mysql+apache+php Linux安装指南
Oct 09 PHP
网友原创的PHP模板类代码
Sep 07 PHP
php 购物车实例(申精)
May 11 PHP
探讨PHP使用eAccelerator的API开发详解
Jun 09 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
May 25 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 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 反向排序和随机排序代码
2010/06/30 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
python实现弹窗祝福效果
2019/04/07 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
python 操作hive pyhs2方式
2019/12/21 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
证婚人经典证婚词
2014/01/09 职场文书
大学生先进事迹材料
2014/02/16 职场文书
开学季活动策划方案
2014/02/28 职场文书
小班开学寄语
2014/04/04 职场文书
初中学校军训方案
2014/05/09 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android