本示例使用设备 实时网络双门双向门禁控制板可二次编程控制网络继电器远程开关-淘宝网 (taobao.com)?PHP header(content-type:text/html;charsetGBK); $ThisIpget_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.length10){ $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]; } $SendInfStr001,.$DevRecFramesStr; //确定接收到信息否则设备会连续发送三次 SendInfToIp($socket,$SendInfStr,$peer); $GetDTsubstr($DevBufferDatetimeStr,0,16); $SysDTsubstr(date(Y-m-d H:i:s,time()),0,16); if (strcmp($GetDT,$SysDT)!0){ /*设备时钟与系统不符更新设备时间*/ $SendInfStr003, . $DevBufferMachinStr ., . date(Y-m-d H:i:s, time()); 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]; } $SendInfStr001,.$DevRecFramesStr; //确定接收到信息否则设备会连续发送三次 SendInfToIp($socket,$SendInfStr,$peer); $LastFramesStr$peer.$inMsg; //将接收到的信息接保存用于对比是否重复接收到的信息 //可以在这里加上业务对数据库的查、增、删操作要分析是否重复接收的信息 //用050指令返回开门成功 //用051指令返回开门失败正式系统开发时要有重发机制 */ //$SendInfStr051, . $DevBufferMachinStr . , . $DevBufferCardidStr . ,卡号: . $DevBufferCardidStr . \\n姓名:张三丰 \\n状态:无效卡\\n,20,1,3; $SendInfStr050, . $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真实地址 $Netdrivarray(); 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; } } ?
企业数字化 ERP 产品动态
相关推荐
Self-Replace测试策略:如何确保自更新功能在CI/CD中的可靠性 Self-Replace测试策略:如何确保自更新功能在CI/CD中的可靠性 【免费下载链接】self-replace Utility library that helps to implement processes that replace themselves 项目地址: https://gitcode.com/gh_mirrors/se/self-replace
在当今的软件开发中&am… · 2026/9/23 3:38:53
嵌入式开发必读:Microchip免责声明、商标合规与全球支持实战指南 1. 项目概述:为什么需要读懂一份“枯燥”的声明做嵌入式开发,尤其是用Microchip(原Atmel)的MCU,我们每天打交道的是数据手册、应用笔记和开发环境。但不知道你有没有留意过,每次下载文档、打开IDEÿ… · 2026/9/24 12:00:33
Apache Ignite企业级分布式快照架构:生产就绪的数据保护与恢复机制 Apache Ignite企业级分布式快照架构:生产就绪的数据保护与恢复机制 【免费下载链接】ignite Apache Ignite 项目地址: https://gitcode.com/gh_mirrors/ignite4/ignite
Apache Ignite作为高性能分布式内存计算平台,其快照管理功能提供了企业级数据… · 2026/9/22 4:58:30
老款 iPhone 还能越狱吗?palera1n 完整指南:从判断兼容性到第一次越狱 老款 iPhone 还能越狱吗?palera1n 完整指南:从判断兼容性到第一次越狱 【免费下载链接】palera1n Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0 and higher. 项目地址: https://gitcode.com/GitHub_Trending/pa/… · 2026/9/24 16:13:06
Comp AI CRM 中的 Turborepo 缓存机制:哈希方程、全局输入与缓存失效实践 后端前端CRM人工智能AI Agent 【免费下载链接】crm Comp AI CRM is an open source, CRM designed for AI agents. Agentic-first CRM. 项目地址: https://gitcode.com/gh_mirrors/crm48/crm 点击查看 免费下载 本文以 Comp AI CRM(Agentic-first CRM&a… · 2026/9/24 16:12:46
palera1n 旧 iPhone 越狱教程:从编译到 DFU 引导的 checkm8 漏洞完整走查 palera1n 旧 iPhone 越狱教程:从编译到 DFU 引导的 checkm8 漏洞完整走查 【免费下载链接】palera1n Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0 and higher. 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n… · 2026/9/24 16:12:46
AI-Research-SKILLs npm 包设计与实现:用 npx 一键为编码 Agent 安装 AI 研究技能 AI-Research-SKILLs npm 包设计与实现:用 npx 一键为编码 Agent 安装 AI 研究技能 【免费下载链接】AI-Research-SKILLs Comprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/cod… · 2026/9/24 16:12:46
FerretDB 遥测机制全解析:数据采集范围、telemetry.json 结构与开启/禁用实操指南 后端数据库文档数据库 【免费下载链接】FerretDB A truly Open Source MongoDB alternative 项目地址: https://gitcode.com/gh_mirrors/fe/FerretDB 点击查看 免费下载 本指南以 website/docs/telemetry.md 为核心骨架,深入讲解 FerretDB 内置的匿名遥… · 2026/9/24 16:12:40
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44