浅析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中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
解析php类的注册与自动加载
Jul 05 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
php实现根据IP地址获取其所在省市的方法
Apr 30 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
php版微信自定义回复功能示例
Dec 05 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
php屏蔽错误及提示的方法
May 10 PHP
php判断IP地址是否在多个IP段内
Aug 18 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生成二维码图片方法汇总
2016/12/17 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
Vue官网todoMVC示例代码
2018/01/29 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
vue实现信息管理系统
2020/05/30 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
金融专业毕业生推荐信
2013/11/26 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
追悼会答谢词
2015/01/05 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android