基于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开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
php中去除所有js,html,css代码
Oct 12 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
基于simple_html_dom的使用小结
Jul 01 PHP
简单的php新闻发布系统教程
May 09 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
Jun 13 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
php的4种常用运行方式详解
Dec 22 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP静态新闻列表自动生成代码
2007/06/14 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
JQuery toggle使用分析
2009/11/16 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
对dataframe进行列相加,行相加的实例
2018/06/08 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
python读取几个G的csv文件方法
2019/01/07 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
电脑饰品店的创业计划书
2014/01/21 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript