基于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简单静态页生成过程
Mar 27 PHP
几款免费开源的不用数据库的php的cms
Dec 19 PHP
判断php数组是否为索引数组的实现方法
Jun 13 PHP
php读取mysql中文数据出现乱码的解决方法
Aug 16 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
9条PHP编程小知识及易犯的小错误
Jan 22 PHP
php输出xml属性的方法
Mar 19 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
laravel model 两表联查示例
Oct 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
使用php4加速网络传输
2006/10/09 PHP
php 异常处理实现代码
2009/03/10 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
vuex的使用步骤
2021/01/06 Vue.js
Python中操作MySQL入门实例
2015/02/08 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
百度吧主申请感言
2014/01/12 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
表彰大会策划方案
2014/05/13 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python