本文主要介绍PHP下利用Socket接口实现TCP/IP功能,以及如何使用ESP8266 wifi芯片与远程PHP服务器通讯。
1. 开启socket支持
切换到目录 D:\Program Files\WAMP\php-5.6.31-Win32-VC11-x64 ,打开php.ini文件,大约在915行,开启PHP的socket扩展支持:
2. 创建服务器
打开Eclispe,新建工程并添加PHP文件 server.php,内容如下:<?php
set_time_limit ( 0 ); // 确保在连接客户端时不会超时
$ip = '192.168.2.158'; //!!本地电脑IP地址,确保正确
$port = 3000;
/*
* +-------------------------------
* @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 ))
{
//创建一个Socket链接
echo "socket_create() failed: reason: " . socket_strerror ( $sock ) . "\n";
}
if (($ret = socket_bind ( $sock, $ip, $port ))
{
//绑定Socket到端口
echo "socket_bind() failed: reason: " . socket_strerror ( $ret ) . "\n";
}
if (($ret = socket_listen ( $sock, 4 ))
{
//开始监听链接链接
echo "socket_listen() failed: reason: " . socket_strerror ( $ret ) . "\n";
}
//阻塞等待处理
do
{
if (($msgsock = socket_accept ( $sock ))
{
//堵塞等待另一个Socket来处理通信
echo "socket_accept() failed: reason: " . socket_strerror ( $msgsock ) . "\n";
break;
}
else
{
$buf = socket_read ( $msgsock, 8192 ); //获得客户端的输入
socket_write ( $msgsock, $buf, strlen ( $buf ) ); //回显
$talkback = "Recieve buffer: $buf\n"; //服务器打印信息
echo $talkback;
}
socket_close ( $msgsock );
} while ( true );
socket_close ( $sock );
?>
3. 运行服务器
打开windows下的CMD命令窗口,切换到上面PHP工程目录,运行server.php,如下:php server.php
4. 查看端口
查看端口3000是否正在在监听,如下:netstat -aon|findstr "3000"
5. 创建连接
通过串口连接ESP8266,并利用特定命令《ESP8266常用命令集合》,《ESP8266—SOCKET编程》 创建TCP/IP连接,如:发送A-Z等26测试字母。
看到CMD中打印出PHP服务器接收到的数据,说明通讯成功。
注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。