之前对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服务器接收到的数据,说明通讯成功。

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:web开发,PHP开发