基于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
PHP测试程序运行时间的类
Feb 05 PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
简单的php文件上传(实例)
Oct 27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP异步进程助手async-helper
Feb 05 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 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中显示数组与对象的实现代码
2011/04/18 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
PHP检测用户语言的方法
2015/06/15 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
Python常用的爬虫技巧总结
2016/03/28 Python
Python单例模式的两种实现方法
2017/08/14 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
python爬虫请求头设置代码
2020/07/28 Python
详解Python中第三方库Faker
2020/09/25 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
企业精细化管理实施方案
2014/03/23 职场文书
超市活动计划书
2014/04/24 职场文书
大学生村官演讲稿
2014/04/25 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2015年保管员工作总结
2015/04/30 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android