PHP网络开发—Esp8266通过TCP/IP连接PHP服务器
admin 于 2017年12月24日 发表在 PHP后端服务开发
之前对windows下PHP开发环境搭建《Win7下搭建Apache+Mysql+PHP开发环境》以及开发工具Eclispe《Eclipse教程(5)—搭建PHP开发环境》 有过介绍,所以,这里不再赘述。
本文主要介绍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 )) < 0) { //创建一个Socket链接 echo "socket_create() failed: reason: " . socket_strerror ( $sock ) . "\n"; } if (($ret = socket_bind ( $sock, $ip, $port )) < 0) { //绑定Socket到端口 echo "socket_bind() failed: reason: " . socket_strerror ( $ret ) . "\n"; } if (($ret = socket_listen ( $sock, 4 )) < 0) { //开始监听链接链接 echo "socket_listen() failed: reason: " . socket_strerror ( $ret ) . "\n"; } //阻塞等待处理 do { if (($msgsock = socket_accept ( $sock )) < 0) { //堵塞等待另一个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服务器接收到的数据,说明通讯成功。