实时在线云消费机、考勤门禁机、网络读卡器服务器端PHP Socket源码

消费机UDP通讯协议介绍:

云消费机通讯协议 附Java、PHP、Python、C# 、.Net、VB、Delphi、VFP、Android示例源码_zhangjin7422的专栏-CSDN博客设备向服务器发送的指令格式,每个字段用半角逗号(,)分隔。序号指令名称指令格式指令说明示例1响应服务器的搜索100,包序列号,终端IP,子网掩码,网关IP,远程电脑主机IP,端口号,终端硬件号响应电脑发出的搜寻局域网内所有终端设备指令000,就是电脑软件用广播式向39190端口发送字符串“000”100,00009,192.168.1.218,255.255.255.0,192.168.1.1,192.168.1.3,39169,1https://blog.csdn.net/zhangjin7422/article/details/118608559

消费机介绍:

         账户金额等所有持卡人信息存在电脑服务器上,在线刷卡消费时设备将IC卡的物理卡号和消费金额传到服务器,服务器脑处理保存后将消费结果返发到消费机上显示,内置高灵敏扫码模组,扫码信息即时上传到服务器,脱网时支持白名单记账消费。https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-21914722028.2.60cc6baaxEPiPw&id=17021194999https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-21914722028.2.60cc6baaxEPiPw&id=17021194999

实时门禁控制板: 

       考勤门禁控制板可外接刷卡读头、扫描枪、人脸识别器,将读取到的ID号即时发送到服务器,由服务器的软件判断后再返回开门信号或反馈信息。脱网时由控制板内的白名单控制刷卡是否可通行。

门禁板详细介绍:实时TCP网络双门双向门禁控制板大型小区网络开关可编程二次开发-淘宝网 (taobao.com) 

服务器端PHP源码

<?PHP
  header("content-type:text/html;charset=GBK");
  
  $ThisIp=get_local_ip();   //获取电脑IP地址       
  $server = 'udp://'.$ThisIp.':39192';  
  $socket = stream_socket_server($server, $errno, $errstr, STREAM_SERVER_BIND);  
  if (!$socket) 
  {  
      die("$errstr ($errno)");  
  }  
  echo "系统绑定的IP :".$ThisIp.":39192\n";    
  
  $LastFramesStr= "";      //保存最后接收到的信息,用于比较是否重复接收的信息  
  
  do{ 
      //监听UDP端口,并将接收到的信息显示,正式项目只解析数据不需要显示
      $inMsg = stream_socket_recvfrom($socket, 1024, 0, $peer);        
      $Fields = explode(",",$inMsg );     //将接收到的信息 分字段解析
      echo "From Ip:".$peer."\n";
      echo "Getdata:".$inMsg."\n\n" ;
      
      switch($Fields[0]){
            case "100":    //*设备接收到000搜索指令后返回的设备信息*/
                  if(sizeof($Fields)<9){                    
                       $DevBufferIpAddrStr= $Fields[1];          /*终端IP*/
                       $DevBufferMaskStr= $Fields[2];            /*掩码*/
                       $DevBufferGatewayStr= $Fields[3];         /*网关*/
                       $DevBufferRemoteAddrStr= $Fields[4];      /*远程服务器IP*/
                       $DevBufferPort= $Fields[5];               /*端口*/
                       $DevBufferNumberDecStr= $Fields[6];       /*设备序号*/
                  }else{
                            $DevBufferIpAddrStr= $Fields[1];          /*终端IP*/
                            $DevBufferMaskStr= $Fields[2];            /*掩码*/
                            $DevBufferGatewayStr= $Fields[3];         /*网关*/
                            $DevBufferGatewayStrMAC= $Fields[4];      /*网关MAC*/
                            $DevBufferRemoteAddrStr= $Fields[5];      /*远程服务器IP*/
                            $DevBufferRemoteAddrMACStr= $Fields[6];   /*远程服务器IPMAC*/
                            $DevBufferMACSearchStr= $Fields[7];       /*MAC搜索标识*/ 
                            $DevBufferPort= $Fields[8];               /*端口*/
                            $DevBufferNumberDecStr= $Fields[9];       /*设备模块序号*/
                            if(strArr.length>10){
                                $DevBufferSerialNumStr= $Fields[10];  /*设备唯一硬件序号*/
                            }
                            
                            if(strcmp($DevBufferRemoteAddrStr,"255.255.255.255")!=0 && strcmp($DevBufferRemoteAddrStr,$ThisIp)!=0 ){
                               echo "消费机的远程服务器IP不是指向当前网卡,请在消费机上 功能1>\7IP地址及端口设定 设定正确的网络参数!\n\n";  
                            }                   
                  }
                  
                  break;            
            case "101":    ///*接收到设备的开的信号*/
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferDatetimeStr = $Fields[5];       /*设备日期时间*/
                  if(sizeof($Fields)>6){                    /*2018年以后的设备有唯一硬件序号*/
                        $DevBufferSerialNumStr=$Fields[6];
                  }
                  
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $GetDT=substr($DevBufferDatetimeStr,0,16);
                  $SysDT=substr(date('Y-m-d H:i:s',time()),0,16);

                  if (strcmp($GetDT,$SysDT)!=0){            /*设备时钟与系统不符,更新设备时间*/
                      $SendInfStr="003," . $DevBufferMachinStr ."," . date('Y-m-d H:i:s', time());       
                      SendInfToIp($socket,$SendInfStr,$peer);
                  }
                  
                  break;            
            case "102":  //接收到消费机的刷卡信息                          
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCardidStr = $Fields[5];         /*卡号*/
                  if(sizeof($Fields)>6){                    /*2018年以后的设备有唯一硬件序号*/
                        $DevBufferSerialNumStr=$Fields[6];
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息
                  //可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息
                  
                  //用009指令 将业务处理结果发送到设备
                  //设备如接收到了本次发送的信息,会以109指令回复,在正式项目中要根据此特性做重发机制*/
                  
                  $SendInfStr="009,". $DevBufferMachinStr . ",卡号:" . $DevBufferCardidStr  . "\\n姓名:张三丰\\n余额:888.88\\n状态:卡可正常使用\\n,20,1,0" ; 
                  SendInfToIp($socket,$SendInfStr,$peer);
                  break;     
                         
            case "103":  //接收到 输入消费金额后刷卡、消费机定额消费、消费机计次消费 的上传信息
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCardidStr = $Fields[5];         /*卡号*/
                  $DevBufferUseMoneryStr= $Fields[6];       /*消费金额*/
                  $DevBufferUseTimeStr= $Fields[7];         /*消费时间*/
                  if(sizeof($Fields)>8){                    /*2018年以后的设备有唯一硬件序号*/
                      $DevBufferSerialNumStr=$Fields[8];
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息
                  //可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息
                  
                  //用006指令返回本次消费失败,
                  //用008指令返回本次消费成功,
                  //设备如接收到了本次发送的信息,会以109指令回复,在正式项目中要根据此特性做重发机制*/
                  
                  //$SendInfStr="006," . $DevBufferMachinStr . "," . $DevBufferCardidStr ."," . "姓名:张三丰  \\n余额:168.88 \\n状态:此卡已挂失\\n ,20,0,6" ; 
                  $SendInfStr="008," . $DevBufferMachinStr . "," . $DevBufferCardidStr . "," . $DevBufferUseMoneryStr ."," . "姓名:张三丰 {123.45}\\n,20,0,1" ;                   
                  SendInfToIp($socket,$SendInfStr,$peer);            
                  
                  break;                        
            case "104";   ///*接收到 计次消费模式下,终端刷卡后设备向电脑发送此信息 */
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCardidStr = $Fields[5];         /*卡号*/
                  $DevBufferUseTimeStr= $Fields[6];         /*消费时间*/
                  if(sizeof($Fields)>7){                    /*2018年以后的设备有唯一硬件序号*/
                      $DevBufferSerialNumStr=$Fields[7];
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息
                  //可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息
                  
                  //用006指令返回本次消费失败,
                  //用008指令返回本次消费成功,
                  //设备如接收到了本次发送的信息,会以109指令回复,在正式项目中要根据此特性做重发机制*/
                  
                  //$SendInfStr="006," . $DevBufferMachinStr . "," . $DevBufferCardidStr ."," . "姓名:张三丰  \\n余额:168.88 \\n状态:此卡已挂失\\n ,20,0,6" ; 
                  $SendInfStr="008," . $DevBufferMachinStr . "," . $DevBufferCardidStr . ",0.00," . "姓名:张三丰 {123.45}\\n,20,0,16" ;                   
                  SendInfToIp($socket,$SendInfStr,$peer);            
                  break;      
                  
            case "105":    //接收到脱网时 白名单卡 记账消费记录
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCardidStr = $Fields[5];         /*卡号*/
                  $DevBufferUseMoneryStr= $Fields[6];       /*消费金额*/
                  $DevBufferUseTimeStr= $Fields[7];         /*消费时间*/
                  $DevBufferStaryStr= $Fields[8];           /*消费方式  0扣费 1计次*/
                  $DevBufferRecordAddStr= $Fields[9];       /*记录地址标识*/
                  $DevBufferAllNoStr= $Fields[10];          /*总计录数*/
                  if(sizeof($Fields)>11){                   /*2018年以后的设备有唯一硬件序号*/
                       $DevBufferSerialNumStr=$Fields[11];
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息                  
                  
                  if(!CheckDateTime($DevBufferUseTimeStr)){         /*判断消费时间是否正确*/
                      $DevBufferUseTimeStr="9999-99-99 99:99:99";   /*如果消费时间不正确,需更为 9999-99-99 99:99:99 才能将此条记录删除 */
                  }else{                      
                      //时间正确说明是条有效记录,可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息                 
                  }
                  
                  /*清除设备内当前这条已上传的记录,驱动设备继续上传剩下的记录*/
                  $SendInfStr="011," . $DevBufferMachinStr . "," . $DevBufferCardidStr . "," . $DevBufferUseMoneryStr . "," . $DevBufferUseTimeStr . "," . $DevBufferRecordAddStr; 
                  SendInfToIp($socket,$SendInfStr,$peer);                     
                  break;                        
                  
            case "106":    //接收到设备的按键信息
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferInputKeyStr= $Fields[5];        /*按键信息*/
                  if(sizeof($Fields)>6){                   /*2018年以后的设备有唯一硬件序号*/
                       $DevBufferSerialNumStr=$Fields[6];
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息
                  //可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息
                  
                  break;            
            case "108":   //接收到设备在订取餐模式下刷卡取餐的信息
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCardidStr = $Fields[5];         /*卡号*/
                  if(sizeof($Fields)>6){                    /*2018年以后的设备有唯一硬件序号*/
                        $DevBufferSerialNumStr=$Fields[6];
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息
                  //可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息
                  
                  //用013指令回复本次取餐结果,正式系统开发时要有重发机制 */
                  $SendInfStr="013," . $DevBufferMachinStr . ",卡号:" .$DevBufferCardidStr . "\\n姓名:张三丰  \\n状态:水煮肉片套餐\\n份数:1  余额:{123.8}\\n,20,0,27" ; 
                  SendInfToIp($socket,$SendInfStr,$peer);
                        
                  break;            
            case "109":     //设备接收到服务器发送信息的反馈,服务器发送完006、008、009、013指令后,都会接收到109的反馈,如未接收到反馈服务器应重发
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCommandStr = $Fields[5];        /*指令码*/
                  
                  break;    
            case "125":   //接收到设备直接扫码信息
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCommandStr = $Fields[5];        /*指令号*/
                  $DevBufferQrcodeInfStr= "";               /*扫码信息*/
                  if(sizeof($Fields)>6){                    /*防止二维码信息中有分隔符,*/
                      for($j=6;$j<sizeof($Fields)-1;$j++){
											    $DevBufferQrcodeInfStr=$DevBufferQrcodeInfStr.$Fields[$j];
                      }
                      $DevBufferSerialNumStr=$Fields[sizeof($Fields)-1];  /*2018年以后的设备有唯一硬件序号*/
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息
                  //可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息
                  
                  //用009指令返回处理结果 */
                  $SendInfStr="009," . $DevBufferMachinStr . ",扫码信息:" .$DevBufferQrcodeInfStr . "\\n\\n\\n,20,1,0" ; 
                  SendInfToIp($socket,$SendInfStr,$peer);
                        
                  break;     
            case "128":   //接收到消费金额+扫码信息
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCommandStr = $Fields[5];        /*指令号*/
                  $DevBufferUseMoneryStr= $Fields[6];       /*消费金额*/
                  $DevBufferUseTimeStr= $Fields[7];         /*消费时间*/
                  $DevBufferQrcodeInfStr= "";               /*扫码信息*/
                  if(sizeof($Fields)>9){                    /*防止二维码信息中有分隔符,*/
                      for($j=9;$j<sizeof($Fields)-1;$j++){
											    $DevBufferQrcodeInfStr=$DevBufferQrcodeInfStr.$Fields[$j];
                      }
                      $DevBufferSerialNumStr=$Fields[sizeof($Fields)-1];  /*2018年以后的设备有唯一硬件序号*/
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息
                  //可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息
                  
                  //用006指令返回本次消费失败,
                  //用008指令返回本次消费成功,
                  //设备如接收到了本次发送的信息,会以109指令回复,在正式项目中要根据此特性做重发机制*/
                  
                  //$SendInfStr="006," . $DevBufferMachinStr . "," . $DevBufferCommandStr ."," . "支付失败\\n ,20,0,6" ; 
                  $SendInfStr="008," . $DevBufferMachinStr . "," . $DevBufferCommandStr . "," . $DevBufferUseMoneryStr ."," . "正在进行扫码支付..{请不要按动键盘!    \n},5,0,1" ;                   
                  SendInfToIp($socket,$SendInfStr,$peer); 
                        
                  break;                                
            case "150":
                  $DevRecFramesStr = $Fields[1];            /*包序列号 */
                  $DevBufferIpAddrStr = $Fields[2];         /*终端IP  */
                  $DevBufferRemoteAddrStr = $Fields[3];     /*远程电脑指机IP*/
                  $DevBufferMachinStr = $Fields[4];         /*机号*/
                  $DevBufferCardidStr = $Fields[5];         /*卡号*/
                  $DevBufferReaderStr= $Fields[6];          /*读头号*/
                  $DevBufferDoorNoStr= $Fields[7];          /*门或继电器号*/ 
                  $DevBufferDelayStr= $Fields[8];           /*门磁未关秒数,0表示已关*/ 
                  $DevBufferPasswPropStr= $Fields[9];       /*密码属性(0密码无效,1刷卡后按密码,2补签密码,3开门密码,4防迫胁密码)*/
                  $DevBufferPassWStr= $Fields[10];          /*密码(最多8位数字)*/
                  $DevBufferUseTimeStr= $Fields[11];        /*刷卡时间*/
                  if(sizeof($Fields)>12){                   /*2018年以后的设备有唯一硬件序号*/
                            $DevBufferSerialNumStr=$Fields[12];
                  }
                  $SendInfStr="001,".$DevRecFramesStr;      //确定接收到信息,否则设备会连续发送三次
                  SendInfToIp($socket,$SendInfStr,$peer);          
                  
                  $LastFramesStr=$peer.$inMsg;              //将接收到的信息接保存,用于对比是否重复接收到的信息
                  
                  //可以在这里加上业务对数据库的查、增、删操作,要分析是否重复接收的信息
                  //用050指令返回开门成功,
                  //用051指令返回开门失败,正式系统开发时要有重发机制 */
                  //$SendInfStr="051," . $DevBufferMachinStr . "," . $DevBufferCardidStr . ",卡号:" . $DevBufferCardidStr . "\\n姓名:张三丰  \\n状态:无效卡\\n,20,1,3"; 
                  
                  $SendInfStr="050," . $DevBufferMachinStr . "," . $DevBufferCardidStr . ",卡号:" . $DevBufferCardidStr . "\\n姓名:张三丰  \\n状态:欢迎关临\\n,20,1,0," . $DevBufferReaderStr . "," . $DevBufferDoorNoStr . ",5,20" ; 
                  SendInfToIp($socket,$SendInfStr,$peer);
                          
            default: 
                 //更多的字段信息及反馈指令,请仔细查看设备的通讯协议说明......
      }
                        
  } while ($inMsg !== false);
  
//判断字符串是否一个合法的日期时间--------------------------------------------------------------------------------------------------------
function CheckDateTime($data)
{
  if(date('Y-m-d H:i:s',strtotime($data))==$data){
      return true;
   }else{
      return false;
   } 
}
//确定接收到设备上传的数,以免设备重复发送--------------------------------------------------------------------------------------------------
function SendInfToIp($socket,$SendInfStr,$peer)
{
  stream_socket_sendto($socket,$SendInfStr,0,$peer); 
  //$handle = stream_socket_client("udp://".$peer, $errno, $errstr);
  //fwrite($handle, $SendInfStr);  
    
  echo "SendTo IP:".$peer."\n";
  echo "SendInfor:{$SendInfStr}\n\n";      
 }        
//获取本机IP地址------------------------------------------------------------------------------------------------------------------------  
function get_local_ip()
{
    $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";
    //获取操作系统为win2000/xp、win7的本机IP真实地址
    $Netdriv=array();
    exec("ipconfig", $out, $stats);
    if (!empty($out)) {
        foreach ($out AS $row) {
            if (strstr($row, "IP") && strstr($row, ":") && !strstr($row, "IPv6")) {
                $tmpIp = explode(":", $row);
                if (preg_match($preg, trim($tmpIp[1]))) {
                    $Netdriv[]=trim($tmpIp[1]);
                    echo trim($tmpIp[1])."\n";
                }
            }
        }
    }    
    //获取操作系统为linux类型的本机IP真实地址
    //exec("ifconfig", $out, $stats);
    //if (!empty($out)) {
    //    if (isset($out[1]) && strstr($out[1], 'addr:')) {
    //        $tmpArray = explode(":", $out[1]);
    //        $tmpIp = explode("", $tmpArray[1]);
    //        if (preg_match($preg, trim($tmpIp[0]))) {
    //            return trim($tmpIp[0]);
    //        }
    //    }
    //}
    
    if (!empty($Netdriv)) {
        return $Netdriv[0];   //如果有多张网块,可以修改数组取值来绑定相应的网卡
    }else{
        return '127.0.0.1';
    }
}  

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vx_13822155058

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值