基于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
杏林同学录(七)
Oct 09 PHP
php下过滤HTML代码的函数
Dec 10 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
编写安全 PHP应用程序的七个习惯深入分析
Jun 08 PHP
PHP empty函数报错解决办法
Mar 06 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
Fleaphp常见函数功能与用法示例
Nov 15 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 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操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
实现动画效果核心方式的js代码
2013/09/27 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
python 中的divmod数字处理函数浅析
2017/10/17 Python
Python中常见的异常总结
2018/02/20 Python
python之pandas用法大全
2018/03/13 Python
Python Grid使用和布局详解
2018/06/30 Python
Python import与from import使用及区别介绍
2018/09/06 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Python如何读写CSV文件
2020/08/13 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
公司行政经理岗位职责
2013/12/24 职场文书
音乐会主持人开场白
2015/05/28 职场文书
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android