基于PHP Socket配置以及实例的详细介绍


Posted in PHP onJune 13, 2013

2个php测试文件
server.php

<?php
     //phpinfo();
//确保在连接客户端时不会超时
set_time_limit(0);
$ip = '127.0.0.1';
$port = 1935;
/*
 +-------------------------------
 *    @socket通信整个过程
 +-------------------------------
 *    @socket_create
 *    @socket_bind
 *    @socket_listen
 *    @socket_accept
 *    @socket_read
 *    @socket_write
 *    @socket_close
 +--------------------------------
 */
/*----------------    以下操作都是手册上的    -------------------*/
if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {
    echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";
}
if(($ret = socket_bind($sock,$ip,$port)) < 0) {
    echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";
}
if(($ret = socket_listen($sock,4)) < 0) {
    echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";
}
$count = 0;
do {
    if (($msgsock = socket_accept($sock)) < 0) {
        echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
        break;
    } else {        //发到客户端
        $msg ="测试成功!\n";
        socket_write($msgsock, $msg, strlen($msg));
        echo "测试成功了啊\n";
        $buf = socket_read($msgsock,8192);
        
        $talkback = "收到的信息:$buf\n";
        echo $talkback;
        if(++$count >= 5){
            break;
        };
    
    }
    //echo $buf;
    socket_close($msgsock);
} while (true);
socket_close($sock);
?>

client.php
<?php
error_reporting(E_ALL);
set_time_limit(0);
echo "<h2>TCP/IP Connection</h2>\n";
$port = 1935;
$ip = "127.0.0.1";
/*
 +-------------------------------
 *    @socket连接整个过程
 +-------------------------------
 *    @socket_create
 *    @socket_connect
 *    @socket_write
 *    @socket_read
 *    @socket_close
 +--------------------------------
 */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
    echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
}else {
    echo "OK.\n";
}
echo "试图连接 '$ip' 端口 '$port'...\n";
$result = socket_connect($socket, $ip, $port);
if ($result < 0) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
}else {
    echo "连接OK\n";
}
$in = "Ho\r\n";
$in .= "first blood\r\n";
$out = '';
if(!socket_write($socket, $in, strlen($in))) {
    echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
}else {
    echo "发送到服务器信息成功!\n";
    echo "发送的内容为:<font color='red'>$in</font> <br>";
}
while($out = socket_read($socket, 8192)) {
    echo "接收服务器回传信息成功!\n";
    echo "接受的内容为:",$out;
}
echo "关闭SOCKET...\n";
socket_close($socket);
echo "关闭OK\n";
?>

侦听
# /usr/local/php/bin/php  /usr/local/apache2/htdocs/server.php

基于PHP Socket配置以及实例的详细介绍

请求
# /usr/local/php/bin/php  /usr/local/apache2/htdocs/client.php

基于PHP Socket配置以及实例的详细介绍

默认PHP是没有开启Socket的
 
#cd ./ext/sockets/
# /usr/local/php/bin/phpize
# ./configure --enable-sockets --with-php-config=/usr/local/php/bin/php-config
# make
# make install

php.ini修改配置
增加
extension=sockets.so
 
重启apache
# /usr/local/apache2/bin/apachectl restart

===================
Windows下的配置
修改php.ini
extension=php_sockets.dll
重启apache
cmd下起2个
php的安装目录

C:/php/php.exe   F:web/server.php
C:/php/php.exe   F:web/client.php

PHP 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
php批量删除数据库下指定前缀的表以prefix_为例
Aug 24 PHP
php防止sql注入之过滤分页参数实例
Nov 03 PHP
php从给定url获取文件扩展名的方法
Mar 14 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
PHP中使用curl入门教程
Jul 02 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
PHP安全之register_globals的on和off的区别
Jul 23 PHP
深入php socket的讲解与实例分析
Jun 13 #PHP
PHP数据类型的总结分析
Jun 13 #PHP
如何用C语言编写PHP扩展的详解
Jun 13 #PHP
探讨:如何编写PHP扩展
Jun 13 #PHP
PHP APC的安装与使用详解
Jun 13 #PHP
eAccelerator的安装与使用详解
Jun 13 #PHP
探讨Hessian在PHP中的使用分析
Jun 13 #PHP
You might like
深入PHP数据加密详解
2013/06/18 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
python函数的万能参数传参详解
2019/07/26 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
PHP如何自定义函数
2016/09/16 面试题
骨干教师培训感言
2014/01/16 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
军训口号
2014/06/13 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
实习单位意见
2015/06/04 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
JS数组的常用方法整理
2021/03/31 Javascript