浅析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 Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
php 购物车的例子
May 04 PHP
PHP 源代码压缩小工具
Dec 22 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
php使用正则表达式获取字符串中的URL
Dec 29 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 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 分页类 扩展代码
2009/06/11 PHP
php基础学习之变量的使用
2011/06/09 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
如何在django中运行scrapy框架
2020/04/22 Python
在keras中实现查看其训练loss值
2020/06/16 Python
python使用建议技巧分享(三)
2020/08/18 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
实习单位接收函模板
2014/01/10 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
男女朋友协议书
2014/04/23 职场文书
幼儿园教师求职信
2015/03/20 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
2016中秋节广告语
2016/01/28 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
图文详解nginx日志切割的实现
2022/01/18 Servers
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript