基于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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
php中require和require_once的区别说明
Feb 27 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
stripos函数知识点实例分享
Feb 11 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 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 HTML代码串截取代码
2008/12/29 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
python实现的一个火车票转让信息采集器
2014/07/09 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
python requests指定出口ip的例子
2019/07/25 Python
python如何实现递归转非递归
2021/02/25 Python
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
Ado与Ado.net的相同与不同
2014/12/08 面试题
《乡下孩子》教学反思
2014/04/17 职场文书
学生评语集锦
2015/01/04 职场文书
电力工程合作意向书
2015/05/11 职场文书
职工宿舍管理制度
2015/08/05 职场文书
《学会看病》教学反思
2016/02/17 职场文书
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
4种方法python批量修改替换列表中元素
2022/04/07 Python
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL