PHP实现连接设备、通讯和发送命令的方法
- 格式:docx
- 大小:20.44 KB
- 文档页数:8
php命令行运行参数详解及应用php命令行运行参数详解及应用php即可以在web页面上执行,也可以通过PHP CLI(命令行界面)在命令行执行PHP脚本。
下面是店铺整理的php命令行运行参数详解及应用,欢迎来学习!php即可以在web页面上执行,又可以通过PHP CLI(命令行界面)在命令行执行PHP脚本。
# 不带参数的执行格式php安装目录/bin/php scriptname.php# 带参数的执行格式php安装目录/bin/php scriptname.php [参数1] [参数2] .....在scriptname.php通过$argv和$argc访问参数# $argv(正式写法$_SERVER['argv'])数组保存着传递的全部参数,需要注意的是第一个参数$argv[0] / $_SERVER['argv'][0] 为执行脚本的名称如, scriptname.php# $argc(正式写法$_SERVER['argc'])保存着参数的数量当用户打开php页面时,服务端便执行PHP的命令并将执行结果发送至用户的浏览器中,这类似于ASP和CoildFusion,PHP可以运行在WINDOWS和多种版本的UNIX上。
除了能够操作您的页面外,PHP还能发送HTTP的标题。
您可以设置cookie,管理数字签名和重定向用户,而且它提供了极好的连通性到其它数据库(还有ODBC),集成各种外部库来做用PDF文档解析XML的任何事情。
那你还知道可以用php的强大功能做点别的'东西吗?在以独立的cgi方式运行时,需要一个php可执行程序,他有很多命令行参数的,有些可以用作很好玩的用途,下面是全部的php命令行参数,其中[]表示可有可无的,<>表是一定要的。
用法 php [-q] [-h] [-s] [-v] [-i] [-f ] | { [args...]} -q 安静模式。
基于PHP的通讯系统设计1. 什么是基于PHP的通讯系统设计基于PHP的通讯系统设计是指使用PHP编程语言来开发一种用于实现通信目的的系统。
通过该系统,用户可以在不同的设备之间进行即时通讯、数据传输和信息交流。
这种系统可以包括多种功能,例如实时聊天、文件传输、语音通话、视频通话等。
2. 如何设计一个基于PHP的通讯系统设计基于PHP的通讯系统需要考虑以下几个方面:2.1 用户认证和权限管理:系统需要提供用户注册、登录和注销功能,以及权限管理机制来控制用户对不同功能和资源的访问权限。
2.2 实时通信功能:系统需要支持实时消息传递,包括点对点聊天和群组聊天。
这可以使用WebSocket协议或者长轮询等技术来实现。
2.3 文件传输功能:系统需要支持用户之间的文件传输,包括上传和下载文件。
这可以通过PHP的文件上传功能和文件管理系统来实现。
2.4 语音和视频通话功能:系统需要支持用户之间的语音和视频通话,可以使用WebRTC技术来实现。
WebRTC是一种开放标准的实时通信技术,可以通过浏览器进行音视频通话。
2.5 用户界面设计:系统的用户界面应该友好易用,能够方便用户进行各种操作,包括消息发送、文件传输、通话等。
3. PHP在通讯系统设计中的作用是什么PHP在通讯系统设计中扮演了重要的角色。
作为一种服务器端编程语言,PHP 提供了丰富的功能和工具来实现通讯系统的各种功能。
以下是PHP在通讯系统设计中的几个重要作用:3.1 服务器端处理:PHP可以用于编写服务器端的代码,用于处理用户请求、验证用户身份、发送和接收消息等。
通过PHP,可以实现服务器端的逻辑处理,保证系统的正常运行。
3.2 数据库操作:通讯系统通常需要使用数据库来存储用户信息、消息记录等数据。
PHP提供了与大多数主流数据库(如MySQL、PostgreSQL等)交互的API,可以方便地进行数据库操作。
3.3 页面呈现:PHP可以用于生成动态的HTML页面,将服务器端的数据呈现给用户。
php和c++socket通讯(基于字节流,⼆进制)研究了⼀下PHP和C++socket通讯,⽤C++作为服务器端,php作为客户端进⾏.socket通讯是基于协议的,因此,只要双⽅协议⼀致就⾏.关于协议的选择:我看过⽹上⼤部分协议都是在应⽤层的协议,选⽤这样的协议很⽅便,基本上就是字符串传过来,传过去本次研究的协议算是当今国际化的⼀个标准做法.length+flag+body(长度+类型+内容)的⽅式,total_length code flag length1string1length2string2总长度操作类型标志字符串1长度字符串1字符串2长度字符串24字节2字节4字节(暂时⽆⽤)2字节x字节2字节x字节php实现⽅式,也很容易,通过pack打包成⼆进制进⾏通讯.下⾯贴⼀下代码本地测试主要应⽤为:发送账号和密码给服务器端<?phpclass Byte{//长度private $length=0;private $byte='';//操作码private $code;public function setBytePrev($content){$this->byte=$content.$this->byte;}public function getByte(){return $this->byte;}public function getLength(){return $this->length;}public function writeChar($string){$this->length+=strlen($string);$str=array_map('ord',str_split($string));foreach($str as $vo){$this->byte.=pack('c',$vo);}$this->byte.=pack('c','0');$this->length++;}public function writeInt($str){$this->length+=4;$this->byte.=pack('L',$str);}public function writeShortInt($interge){$this->length+=2;$this->byte.=pack('v',$interge);}}class GameSocket{private $socket;private $port=9991;private $host='192.168.211.231';private $byte;private $code;const CODE_LENGTH=2;const FLAG_LENGTH=4;public function __set($name,$value){$this->$name=$value;}public function __construct($host='192.168.211.231',$port=9991){$this->host=$host;$this->port=$port;$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if(!$this->socket){exit('创建socket失败');}$result = socket_connect($this->socket,$this->host,$this->port);if(!$result){exit('连接不上⽬标主机'.$this->host);}$this->byte=new Byte();}public function write($data){if(is_string($data)||is_int($data)||is_float($data)){$data[]=$data;}if(is_array($data)){foreach($data as $vo){$this->byte->writeShortInt(strlen($vo));$this->byte->writeChar($vo);}}$this->setPrev();$this->send();}/**设置表头部分*表头=length+code+flag*length是总长度(4字节) code操作标志(2字节) flag暂时⽆⽤(4字节)*/private function getHeader(){$length=$this->byte->getLength();$length=intval($length)+self::CODE_LENGTH+self::FLAG_LENGTH;return pack('L',$length);}private function getCode(){return pack('v',$this->code);}private function getFlag(){return pack('L',24);}private function setPrev(){$this->byte->setBytePrev($this->getHeader().$this->getCode().$this->getFlag());}private function send(){$result=socket_write($this->socket,$this->byte->getByte());if(!$result){exit('发送信息失败');}}public function __desctruct(){socket_close($this->socket);}}$data[]='testzouhao';$data[]='a';$gameSocket=new GameSocket();$gameSocket->code=11;$gameSocket->write($data);通过抓包分析,得到本次的包内容包头等等都不⽤看了,主要看蓝⾊部分.根据协议分析,前4个字节为表头,代表的是长度因此:17 00 00 00代表的是表头长度,17为16进制,转换为⼗进制为23,代表其余部分全部加为23字节. 0b 00代表的是操作码为11,代表是登录操作18 00 00 00代表的是flag,暂时⽆⽤,不去理会0a 00 代表的字符串1的长度,转为⼗进制为1074 65 73 74 7a 6f 75 68 61 6f 分别转为⼗进制之后,是ascii码对应的字符,结果为:testzouhao,由于C++字符串的机制是末尾是\0,所以在字符串后,00字节就是\0然后是第⼆个字符串长度为01 00,也就是为161同理,⼗进制转ascii码,为a,之后的00为c++机制的\0完美解析,发送包⽆措,之后c++服务器也返回了相应的包,我在按照同理进⾏解包就可以了!。
thinkphp6 workerman 使用实例-回复"thinkphp6 workerman 使用实例"Workerman是一个高性能的PHP Socket服务器框架,可以用于构建多进程TCP/UDP服务器。
与传统的PHP框架不同,Workerman能够实现长连接、异步处理和高并发等特性。
在本文中,我们将详细介绍如何在thinkphp6框架中使用Workerman。
第一步:安装Workerman首先,我们需要使用Composer来安装Workerman。
在命令行中切换到你的thinkphp6项目的根目录,然后执行以下命令:composer require workerman/workerman这将自动下载并安装Workerman到你的项目中。
第二步:创建Workerman应用在thinkphp6框架中,我们可以使用快速生成器命令生成一个新的应用。
在命令行中执行以下命令:php think build:app workerApp这将在你的thinkphp6项目中创建一个名为"workerApp"的新应用。
第三步:配置Workerman在生成的workerApp应用目录中,打开config目录下的worker.php文件。
这个文件是Workerman的配置文件,我们需要根据自己的需求进行配置。
首先,我们需要设置监听的地址和端口。
可以修改以下代码片段:'address' => '0.0.0.0','port' => 2345,接下来,我们需要定义具体的业务逻辑处理程序。
在同一个配置文件中,添加以下代码片段:php'worker_class' => 'app\workerApp\worker\Demo',这里的'app\workerApp\worker\Demo'是自己定义的处理程序类,我们需要在后续的步骤中创建这个类。
如何开发api接口 (1)PHP接口开发签名验证原理详解 (3)使用php定义自己的API接口 (8)Api接口文档范例 (10)Web Service 的工作原理 (23)RESTful API 设计最佳实践 (31)如何开发api接口API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
API 函数包含在Windows系统目录下的动态连接库文件中。
Windows API是一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数。
用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。
这在某种程度上很像Windows的天然代码。
而其他的语言只是提供一种能自动而且更容易的访问API的方法。
当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体,VB获取这个调用并经过分析后生成一个特定事件。
更易理解来说:Windows系统除了协调应用程序的执行、内存的分配、系统资源的管理外,同时他也是一个很大的服务中心。
调用这个服务中心的各种服务(每一种服务就是一个函数)可以帮助应用程序达到开启视窗、描绘图形和使用周边设备等目的,由于这些函数服务的对象是应用程序,所以称之为Application Programming Interface,简称API 函数。
WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。
凡是在Windows工作环境底下执行的应用程序,都可以调用Windows API。
linux API在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准---POSIX标准。
POSIX标准是由IEEE 和ISO/IEC共同开发的标准系统。
1关于PHP目前比较常见的五大运行模式:1)CGI(通用网关接口 / Common Gateway Interface)2)FastCGI(常驻型CGI / Long-Live CGI)3)CLI(命令行运行 / Command Line Interface)4)Web模块模式(Apache等Web服务器运行的模式)5)ISAPI(Internet Server Application Program Interface)备注:在PHP5.3以后,PHP不再有ISAPI模式,安装后也不再有php5isapi.dll这个文件。
要在IIS6上使用高版本PHP,必须安装FastCGI 扩展,然后使IIS6支持FastCGI。
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和Web服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。
CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。
CGI已经是比较老的模式了,这几年都很少用了。
每有一个用户请求,都会先要创建CGI的子进程,然后处理请求,处理完后结束这个子进程,这就是Fork-And-Execute模式。
当用户请求数量非常多时,会大量挤占系统的资源如内存,CPU时间等,造成效能低下。
所以用CGI方式的服务器有多少连接请求就会有多少CGI子进程,子进程反复加载是CGI性能低下的主要原因。
如果不想把 PHP 嵌入到服务器端软件(如 Apache)作为一个模块安装的话,可以选择以 CGI 的模式安装。
或者把 PHP 用于不同的 CGI 封装以便为代码创建安全的chroot 和 setuid 环境。
这样每个客户机请求一个PHP文件,Web服务器就调用php.exe(win下是php.exe,linux是php)去解释这个文件,然后再把解释的结果以网页的形式返回给客户机。
php curl 请求方法在 PHP 中,你可以使用 cURL 库来发送 HTTP 请求。
cURL 是一个功能强大的库,支持多种请求方法,如 GET、POST、PUT、DELETE 等。
下面是一个使用 cURL 发送 GET 请求的示例:```php<?php// 初始化 cURL$ch = curl_init();// 设置 cURL 选项curl_setopt($ch, CURLOPT_URL, "curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);// 发送请求并获取响应$response = curl_exec($ch);// 检查是否有错误发生if(curl_errno($ch)){echo 'Curl error: ' . curl_error($ch);}// 关闭 cURL 资源curl_close($ch);// 处理响应数据echo $response;>```上述示例中,我们使用 `curl_init()` 函数初始化 cURL,然后使用`curl_setopt()` 函数设置请求的 URL 和其他选项。
在本例中,我们将`CURLOPT_RETURNTRANSFER` 设置为 `true`,以便将响应作为字符串返回而不是直接输出。
然后,使用 `curl_exec()` 函数发送请求并获取响应。
如果发生错误,我们使用 `curl_errno()` 和 `curl_error()` 函数获取错误信息。
最后,使用 `curl_close()` 函数关闭 cURL 资源。
你可以根据需要调整请求选项和参数,例如设置请求头、发送 POST 数据等。
cURL 提供了丰富的选项和功能,你可以查阅 PHP cURL 文档以获取更多详细信息和示例。
php如何发送http请求和实现https接口1。
输入接口:https://CRMC URL/spservice/downring.do? sid =1234& sidpwd =123456&randomsessionkey=123420031212121212123456&modulecode=z1000XXX&opertype=1&tonecode=1234123412& issendsms=0& backurl=2。
如何发送http请求,最好有例子,谢谢!PHP的文件操作函数几乎都能用来发送http请求:$html = file_get_contents('');var_dump($html);有些网站会对请求头信息进行检测,这时候就需要用到curl了(php.ini中要启用curl扩展),贴一个我一直用的函数:function fetch_page($site,$url,$params=false){$ch = curl_init();$cookieFile = $site . '_cookiejar.txt';curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);curl_setopt($ch, CURLOPT_COOKIEFILE,$cookieFile);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_HTTPGET, true);curl_setopt($ch, CURLOPT_TIMEOUT, 4);if($params)curl_setopt($ch, CURLOPT_POSTFIELDS, $params);curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');curl_setopt($ch, CURLOPT_URL,$url);$result = curl_exec($ch);//file_put_contents('jobs.html',$result);return $result;}调用示例:$html = fetch_page('google','','key=value');var_dump($html);如果请求类型是https,则只能用curl了,前者会报(至少默认情况下):PHP Warning:file_get_contents(): Unable tofind the wrapper "https" - didyou forget to enable it when youconfigured PHP?如果你说的实现https接口指的是让别人可以用https访问你,那么就需要用openssl生成公私钥,然后编译apache使支持mod_ssl,然后再配置httpd-ssl.conf文件,这些让系统管理员来做吧。
php通讯协议解析PHP通讯协议解析涉及到解析和处理不同的通讯协议,这些协议用于在网络中传输数据。
在以下回答中,我将从多个角度探讨PHP通讯协议解析的相关内容。
首先,PHP作为一种服务器端脚本语言,可以通过各种通讯协议与客户端进行数据交互。
常见的通讯协议包括HTTP、FTP、SMTP、POP3、IMAP等。
针对这些协议,PHP提供了相应的内置函数和类库,以便解析和处理协议相关的数据。
对于HTTP协议,PHP提供了一系列函数和类库,如`$_GET`、`$_POST`、`$_REQUEST`等用于解析客户端通过GET、POST方式提交的数据;`$_COOKIE`用于解析客户端的Cookie数据;`$_SERVER`用于获取HTTP请求的相关信息,如请求方法、请求头等。
此外,PHP还提供了`curl`扩展,可以通过该扩展与其他服务器进行HTTP通讯。
对于FTP协议,PHP提供了`ftp`扩展,可以通过该扩展连接到FTP服务器并进行文件上传、下载等操作。
通过使用该扩展提供的函数,可以解析FTP服务器返回的响应数据,获取文件列表、文件大小等信息。
对于SMTP、POP3和IMAP等电子邮件相关的协议,PHP提供了`mail`函数和`IMAP`、`POP3`扩展。
通过`mail`函数可以发送电子邮件,而通过`IMAP`和`POP3`扩展可以解析和处理收件箱中的邮件,包括获取邮件内容、附件等信息。
除了以上提到的常见通讯协议,还有一些其他的协议,如WebSocket、SOAP等。
对于这些协议,PHP也提供了相应的扩展和类库,以便解析和处理相关的数据。
总结来说,PHP通讯协议解析涉及到解析和处理不同的通讯协议,包括HTTP、FTP、SMTP、POP3、IMAP等。
PHP提供了一系列内置函数和扩展,以便解析和处理这些协议相关的数据。
通过使用这些函数和扩展,我们可以从多个角度全面完整地解析和处理通讯协议中的数据。
PHP实现⾃动发送邮件功能代码(qq邮箱)最近做⼀个邮箱验证的功能,研究了⼀会,搞定了邮件的⾃动发送。
下⾯⽤qq邮箱作为演⽰,⼀步⼀步来解释:⾸先,就是做到邮件的发送,代码如下:<?PHP//邮件发送require './mailer/class.phpmailer.php';require './mailer/class.smtp.php';date_default_timezone_set('PRC');//设置邮件发送的时间,如果不设置,则会显⽰其他区的时间$mail = new PHPMailer();//是否启⽤smtp的debug进⾏调试开发环境建议开启⽣产环境注释掉即可默认关闭debug调试模式$mail->SMTPDebug = 3;//使⽤smtp鉴权⽅式发送邮件,当然你可以选择pop⽅式 sendmail⽅式等本⽂不做详解//可以参考http://phpmailer.github.io/PHPMailer/当中的详细介绍$mail->isSMTP();//smtp需要鉴权这个必须是true$mail->SMTPAuth=true;//链接qq域名邮箱的服务器地址$mail->Host = '';//设置使⽤ssl加密⽅式登录鉴权$mail->SMTPSecure = 'ssl';//设置ssl连接smtp服务器的远程服务器端⼝号可选465或587$mail->Port = 465;//设置发件⼈的主机域可有可⽆默认为localhost 内容任意,建议使⽤你的域名,这⾥为默认localhost$mail->Hostname = 'localhost';//设置发送的邮件的编码可选GB2312$mail->CharSet = 'UTF-8';//设置发件⼈姓名(昵称)可为任意内容,不影响回复(设置为qq昵称即可)$mail->FromName = 'XXXX';//smtp登录的账号这⾥填⼊qq号即可$mail->Username ='发送者的QQ号';//smtp登录的密码这⾥填⼊“独⽴密码” 若为设置“独⽴密码”则填⼊登录qq的密码建议设置“独⽴密码”$mail->Password = 'QQ邮箱的登录密码';//设置发件⼈邮箱地址这⾥填⼊上述提到的“发件⼈邮箱”$mail->From = '发送者的QQ邮箱';//邮件正⽂是否以html⽅式发送$mail->isHTML(true);//设置收件⼈邮箱地址该⽅法有两个参数第⼀个参数为收件⼈邮箱地址第⼆参数为给该地址设置的昵称不同的邮箱系统会⾃动进⾏处理变动这⾥第⼆个参数的意义不⼤$mail->addAddress('收件⼈的QQ邮箱地址','QQ昵称');//可添加多个收件⼈//$mail->addAddress('XXXX@','XXXXX');//添加该邮件的主题$mail->Subject = '这是⼀个PHPMailer发送邮件的⽰例';//添加邮件正⽂$mail->Body = "这是⼀个<b style=\"color:red;\">PHPMailer</b>发送邮件的⼀个测试⽤例";//为该邮件添加附件该⽅法也有两个参数第⼀个参数为附件存放的⽬录(相对⽬录、或绝对⽬录均可)//第⼆参数为在邮件附件中该附件的名称$mail->addAttachment('./src/20151002.png','test.png');//同样该⽅法可以多次调⽤上传多个附件//$mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');//发送命令返回布尔值//PS:经过测试,要是收件⼈不存在.若不出现错误依然返回true也就是说在发送之前//⾃⼰需要些⽅法实现检测该邮箱是否真实有效$status = $mail->send();//简单的判断与提⽰信息if($status){echo '发送邮件成功'.date('Y-m-d H:i:s');;}else{echo '发送邮件失败,错误信息未:'.$mail->ErrorInfo;}>这样就可以实现邮件的发送了。
本文实例讲述了PHP实现连接设备、通讯和发送命令的方法。分享给大家供大家参考。具体如下:
开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正: 1. 采用php socket技术使用TCP/IP连接设备 参数$service_port 连接端口 参数$address 发送IP地址 参数$in 发送命令
? 1 2 3 4 5 6 7 8 9 10 11
functionSend_socket_connect($service_port, $address, $in) { //创建 TCP/IP socket$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("could not create socket!"); //设置超时时间 $timeout= 2; $time= time(); //设置非阻塞模式 @socket_set_nonblock($socket); //超时判断 while(!@socket_connect($socket, $address, $service_port)) { $err= socket_last_error($socket); // 连接成功,跳出循环 if($err=== 10056) { break; 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
} //连接失败,判断超时时间,停止 if((time() - $time) >= $timeout) { socket_close($socket); print('网络异常,请检查网络连接!!'); exit(); } // 刷新频率(250毫秒) usleep(250000); } //设置阻塞模式 @socket_set_block($socket); //发送命令到设备 socket_write($socket, $in, strlen($in)); //关闭连接 socket_close($socket); } Send_socker_xdcoder $buffer为返回值 ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 functionSend_socket_xdcoder($service_port, $address, $in) { //创建 TCP/IP socket $socket= socket_create(AF_INET, SOCK_STREAM, SOL_TCP) ordie("could not create socket!"); //设置超时时间 $timeout= 2; $time= time(); //设置非阻塞模式 @socket_set_nonblock($socket); //超时判断 while(!@socket_connect($socket, $address, $service_port)) { $err= socket_last_error($socket); // 连接成功 if($err=== 10056) { break; } //连接失败,判断超时时间,停止 if((time() - $time) >= $timeout) { socket_close($socket); echo""; exit(); } 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
// 刷新频率(250毫秒) usleep(250000); } //设置阻塞模式 @socket_set_block($socket); //发送命令到设备 socket_write($socket, $in, strlen($in)); //接收设备命令返回数据 $buffer= socket_read($socket, 1024, PHP_NORMAL_READ); //关闭连接 socket_close($socket); //输出返回值 return$buffer; }
2. 采用php socket技术使用UDP协议连接设备,实现通讯和发送命令 参数$service_port 连接端口 参数$address 发送IP地址 参数$in 发送命令
? 1 2 3 4 5 6 7 8 9 10 11 12
functionSend_socket_connect_udp($service_port, $address, $in) { //采用php socket技术使用UDP协议连接设备 $socket= socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); @socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec"=> 2, "usec"=> 0)); //发送命令 @socket_sendto($socket, $in, strlen($in), 0, $address, $service_port); @socket_recvfrom($socket, $buffer, 1024, MSG_WAITALL, $address, $service_port); //关闭连接 if(empty($buffer)) { echo""; } }
Send_socket_xdcoder_udp $buffer 为返回值 ? 1 functionSend_socket_xdcoder_udp($service_port, $address, $in) { //采用php socket技术使用UDP协议连接设备 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$socket= socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); @socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec"=> 2, "usec"=> 0)); //发送命令 @socket_sendto($socket, $in, strlen($in), 0, $address, $service_port); @socket_recvfrom($socket, $buffer, 1024, MSG_WAITALL, $address, $service_port); //关闭连接 socket_close($socket); if(!empty($buffer)) { return$buffer; } else{ echo""; } }
3. 采用RS232串口技术连接设备,实现通讯和发送命令 参数$com 串口号 参数$baudratr 波特率 参数$in 发送命令
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
functionrs232_connect($com, $baudrate, $in) { @set_time_limit(10); //使用 'windows下设置窜口参数'; exec("mode ". $com." BAUD=". $baudrate. " PARITY=n DATA=8 STOP=1 odsr=off"); // "打开端口串口$com"; $f= @fopen($com, 'w+'); //判断串口是否正常打开 if(!$f) { //echo ""; die("Error when open $com"); } //向串口发送数据; fwrite($f, $in); //关闭端口 fclose($f); //串口操作结束 }
还有一个关于命令16进制转换的: ?