基于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 相关文章推荐
用Flash图形化数据(二)
Oct 09 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
php获取网页请求状态程序示例
Jun 17 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
隐性调用php程序的方法
Jun 13 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
Smarty模板变量调节器用法分析
May 23 PHP
Yii2下session跨域名共存的解决方案
Feb 04 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
下载文件的点击数回填
2006/10/09 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
基于Zend的Config机制的应用分析
2013/05/02 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
python实现给数组按片赋值的方法
2015/07/28 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
python一键去抖音视频水印工具
2018/09/14 Python
Python判断telnet通不通的实例
2019/01/26 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
机械专业个人求职自荐信格式
2013/09/21 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
个人查摆剖析材料
2014/10/16 职场文书
机关保密工作承诺书
2015/05/04 职场文书