浅析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程序中的常见漏洞进行攻击
Oct 09 PHP
php上传、管理照片示例
Oct 09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
用PHP连接MySQL代码的参数说明
Jun 07 PHP
php 动态多文件上传
Jan 18 PHP
php设计模式之命令模式的应用详解
May 21 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 PHP
解决laravel查询构造器中的别名问题
Oct 17 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 xml 入门学习资料
2011/01/01 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
PDO::exec讲解
2019/01/28 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
python连接oracle数据库实例
2014/10/17 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
python中的计时器timeit的使用方法
2017/10/20 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
python能做哪方面的工作
2020/06/15 Python
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
大学生职业生涯规划方案
2014/01/03 职场文书
美化环境标语
2014/06/20 职场文书
体育运动会广播稿
2014/10/05 职场文书
合伙购房协议样本
2014/10/06 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python