基于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 相关文章推荐
基于文本的搜索
Oct 09 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
Jul 31 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
一组PHP加密解密函数分享
Jun 05 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
Laravel实现用户注册和登录
Jan 23 PHP
win平台安装配置Nginx+php+mysql 环境
Jan 12 PHP
PHP-FPM实现性能优化
Mar 31 PHP
php中通用的excel导出方法实例
Dec 30 PHP
PHP实现唤起微信支付功能
Feb 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
jquery ajax请求实例深入解析
2012/11/26 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python模拟三级菜单效果
2017/09/11 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
对python调用RPC接口的实例详解
2019/01/03 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Django发送邮件功能实例详解
2019/09/02 Python
python psutil监控进程实例
2019/12/17 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
办公室年终个人自我评价
2013/10/28 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
数控技术专科生自我评价
2014/01/08 职场文书
学习决心书
2014/03/11 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
vue中三级导航的菜单权限控制
2021/03/31 Vue.js