基于php socket(fsockopen)的应用实例分析


Posted in PHP onJune 02, 2013

fsockopen函数能够运用,首先要开启php.ini中的allow_url_open=on;
fsockopen是对socket客户端代码的封装,该函数中封装了socket_create,socket_connect。
服务器端代码:server.php

<?php
error_reporting(E_ALL);
set_time_limit(0);
$address = '127.0.0.1';
$port = 10008;
//创建端口
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() failed:reason:" . socket_strerror(socket_last_error()) . "\n";
}
//绑定
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}
//监听
if (socket_listen($sock, 5) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}
while (true) {
//得到一个链接
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accepty() failed :reason:".socket_strerror(socket_last_error($sock)) . "\n";
break;
}
//welcome 发送到客户端
$msg = "1.<font color='red'>server send:welcome</font><br/>";
socket_write($msgsock, $msg, strlen($msg)); //返回信息给客户端
echo 'read client message\n';
$buf = socket_read($msgsock, 8192); //获取客户端发送过来的信息
$talkback = "2.received message:$buf\n";
echo $talkback;
if (false === socket_write($msgsock, $talkback, strlen($talkback))) { //返回信息给客户端
echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) ."\n";
} else {
echo 'send success';
}
socket_close($msgsock);
}
socket_close($sock);

客户端代码:fsocket.php
<?php
$fp = fsockopen("127.0.0.1", 10008, &$errno, &$errstr, 10);
if (!$fp) {
echo $errstr . " (". $errno . ")<br>n";
} else {
$in = "HEAD / http/1.1\r\n";
$in .= "HOST: localhost \r\n";
$in .= "Connection: close\r\n\r\n";
fputs($fp, $in);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}

PHP 相关文章推荐
初探PHP5
Oct 09 PHP
Email+URL的判断和自动转换函数
Oct 09 PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
php牛逼的面试题分享
Jan 18 PHP
php实现在服务器上创建目录的方法
Mar 16 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
学习php设计模式 php实现桥梁模式(bridge)
Dec 07 PHP
在WordPress的文章编辑器中设置默认内容的方法
Dec 29 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
Laravel+Intervention实现上传图片功能示例
Jul 09 PHP
phpstudy隐藏index.php的方法
Sep 21 PHP
深入PHP操作MongoDB的技术总结
Jun 02 #PHP
深入php数据采集的详解
Jun 02 #PHP
基于php下载文件的详解
Jun 02 #PHP
用PHP实现浏览器点击下载TXT文档的方法详解
Jun 02 #PHP
优化PHP代码技巧的小结
Jun 02 #PHP
PHP无限分类(树形类)的深入分析
Jun 02 #PHP
基于php无限分类的深入理解
Jun 02 #PHP
You might like
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
深入解析php之sphinx
2013/05/15 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
python的pip安装以及使用教程
2018/09/18 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python opencv摄像头的简单应用
2019/06/06 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
快速查找Python安装路径方法
2020/02/06 Python
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
奥巴马英文演讲稿
2014/05/15 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
党员志愿者活动方案
2014/08/28 职场文书
论文评审意见
2015/06/05 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android