基于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 相关文章推荐
PHP的explode和implode的使用说明
Jul 17 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
基于php设计模式中单例模式的应用分析
May 15 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
php计算title标题相似比的方法
Jul 29 PHP
php检查页面是否被百度收录
Oct 28 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
PHP里的$_GET数组介绍
Mar 22 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
JpGraph php柱状图使用介绍
2011/08/23 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
Javascript实现字数统计
2015/07/03 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
详解Django中异步任务之django-celery
2020/11/05 Python
服装设计师职业生涯规划范文
2014/02/28 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
教师先进事迹材料
2014/12/16 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python