基于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 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
php 缓存函数代码
Aug 27 PHP
一个PHP的String类代码
Apr 20 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
php中error与exception的区别及应用
Jul 28 PHP
Opcache导致php-fpm崩溃nginx返回502
Mar 02 PHP
php常用表单验证类用法实例
Jun 18 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
PHP读取PPT文件的方法
Dec 10 PHP
PHP编程获取各个时间段具体时间的方法
May 26 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 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生成和获取XML格式数据的方法
2016/03/04 PHP
Symfony核心类概述
2016/03/17 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
Bootstrap基础学习
2015/06/16 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
微信小程序radio组件使用详解
2018/01/31 Javascript
js实现购物车功能
2018/06/12 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
js实现电灯开关效果
2021/01/19 Javascript
python和C语言混合编程实例
2014/06/04 Python
python引用DLL文件的方法
2015/05/11 Python
Python导入oracle数据的方法
2015/07/10 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python重要函数eval多种用法解析
2020/01/14 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
什么是Rollback Segment
2013/04/22 面试题
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
大学生村官事迹材料
2014/01/21 职场文书
博士导师推荐信
2015/03/25 职场文书
公诉意见书范文
2015/06/05 职场文书
诚信教育主题班会
2015/08/13 职场文书
新手入门Mysql--sql执行过程
2021/06/20 MySQL
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技