本文档由小幺鸡编辑

一. 环境说明(测试环境)

        1.服务器IP

               192.168.1.23

        2.端口

                8090        客户端统一对外端口,切换终端模式【mode 1】,同步访问门禁终端,数据结构请参考【交互数据说明 ->请求数据结构 -> 终端模式】,请求参数请参考接口文档,亦可切换管理模式【mode 2】,数据结构请参考【交互数据说明 ->请求数据结构 -> 管理模式】

                10000      管理者模式访问端口,下发终端策略

二.交互数据说明

        1.访问方式:使用socket进行tcp连接访问,每次通信以“\r”作为结尾

        2.请求数据结构

               (1) 终端模式:

                        数据类型:json字符串

                        数据结构:

                                {

                                    "ip":"",                                            //门禁控制器终端IP

                                    "action":"searchControllers",         //行为名称

                                     "body":[]                                        //所需参数

                                 }

                (2) 管理模式:

                        数据类型:普通字符串

                        数据结构:[命令]   -[参数名]=[参数值]  [-[参数名]=[参数值] ....]

                        strategyDistribute (下发终端策略)

                                        -m    1 增量模式 2全量模式

                                        -dev  设备序列号

           3.响应结构:

                 {

                        "success":true,

                        "error":"",

                        "data":[]

                  }

三.连接请求示例

        1.终端模式

            $sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 

            $res=socket_connect($sock,'127.0.0.1',8090);
            if(!$res){
                return false;
            }
            $data=[
                'ip'=>'',
                'action'=>'searchControllers',
                'body'=>[]
            ];
            $data=json_encode($data)."\r"; 

            socket_write($sock,$data,strlen($data)); 

            $ret='';

            while(true){

                $ret.=socket_read($sock,1024,PHP_NORMAL_READ);

                 if(strrpos($ret,"\r")==(strlen($ret)-1))break;

            }

            return rtrim($data,"\r");


        2.管理者模式

            $sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 

            $res=socket_connect($sock,'127.0.0.1',10000);
            if(!$res){
                return false;
            }
            $data="strategyDistribute -m=2\r";
            socket_write($sock,$data,strlen($data));
            $ret='';
            while(true){
                $ret.=socket_read($sock,1024,PHP_NORMAL_READ);
                if(strrpos($ret,"\r")==(strlen($ret)-1))break;
            }
            return rtrim($data,"\r");