基于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+dbfile开发小型留言本
Oct 09 PHP
论坛头像随机变换代码
Oct 09 PHP
简单易用的计数器(数据库)
Oct 09 PHP
PHP中函数内引用全局变量的方法
Oct 20 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
Apr 23 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
php实现zip文件解压操作
Nov 03 PHP
php 二维数组快速排序算法的实现代码
Oct 17 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 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修改Linux或Unix口令的方法分享
2012/01/30 PHP
Joomla开启SEF的方法
2016/05/04 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
基于iScroll实现内容滚动效果
2018/03/21 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python的几种主动结束程序方式
2019/11/22 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
python如何提升爬虫效率
2020/09/27 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
出生证明范本
2015/06/15 职场文书
2015初中团委工作总结
2015/07/28 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android