基于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创建动态图像
Oct 09 PHP
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
建站常用13种PHP开源CMS比较
Aug 23 PHP
php str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
PHP中文乱码解决方案
Mar 05 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
Thinkphp开发--集成极光推送
Sep 15 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
return false;和e.preventDefault();的区别
2010/07/11 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
解决Python传递中文参数的问题
2015/08/04 Python
Python中random模块生成随机数详解
2016/03/10 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python高级用法总结
2018/05/26 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
实例讲解使用HTML5 Canvas绘制阴影效果的方法
2016/03/25 HTML / CSS
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
一个C/C++编程面试题
2013/11/10 面试题
院药学专业个人求职信
2013/09/21 职场文书
销售经理竞聘书
2014/03/31 职场文书
普通话宣传标语
2014/06/26 职场文书
完整版商业计划书
2014/09/15 职场文书
综治工作汇报材料
2014/10/27 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
详解SQL报错盲注
2022/07/23 SQL Server