基于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
支持oicq头像的留言簿(一)
Oct 09 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
Jul 03 PHP
php绘图之生成饼状图的方法
Jan 24 PHP
php+xml结合Ajax实现点赞功能完整实例
Jan 30 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
汇总PHPmailer群发Gmail的常见问题
Feb 24 PHP
Smarty保留变量用法分析
May 23 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP文件上传类实例详解
2016/04/08 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
定义select的边框颜色
2008/04/28 Javascript
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
通过javascript设置css属性的代码
2009/12/28 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
javaScript语法总结
2016/11/25 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
Python写的服务监控程序实例
2015/01/31 Python
Python复制文件操作实例详解
2015/11/10 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
Python中的取模运算方法
2018/11/10 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
高中物理教学反思
2014/02/08 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书