目录
简介 什么是TCP?
TCP是传输控制协议的缩写。TCP是Internet中流行的协议之一。要使用TCP协议在两个设备之间交换数据,一个设备充当TCP服务器,另一个设备充当TCP客户端。TCP服务器侦听等待来自TCP客户端的TCP连接请求。TCP客户端主动向TCP服务器发出TCP连接请求。
本教程介绍如何使用Arduino Uno / Mega和PHPoC [WiFi] Shield创建一个可同时连接多达4个TCP客户端的TCP服务器。
它将任何传入消息分发到所有连接的客户端。
传入的消息也会打印到串行监视器上。
步骤一 材料准备
硬件准备:
- Arduino Uno或Mega
- PHPoC Shield(P4S-347)或PHPoC WiFi Shield(P4S-348)
软件准备:
- Arduino IDE
步骤二 电路连接
将PHPoC Shield或PHPoC WiFi Shield连接到在Arduino Uno或Mega上
注意: Arduino通过Uno上的引脚10,11,12和13以及Mega上的引脚10,50,51和52与PHPoC [WiFi] Shield通信。因此,这些引脚不能用于通用I / O.
步骤三 安装Arduino IDE
如果您还没有安装Arduino IDE,请下载并安装Arduino IDE:点击进入下载
安装库
运行Arduino IDE
点击项目>加载库>管理库:
在搜索栏上搜索“Phpoc”:
选择PHPoC库并按[Install]按钮:
重新启动Arduino IDE以进行下一步
步骤四 设置网络信息
仅在首次使用时才需要此部分。
1.如果使用以太网
使用PHPoC Shield(P4S-348),您有两种连接网络的选项:以太网或WiFi。
如果使用以太网,请按照此说明将开发板连接到以太网:点击查看
2.如果使用WiFi,则P4S-347和P4S-348均提供WiFi
请按照:
如果您想将开发板作为接入点(AP)操作此步骤
步骤五 开始编程
在Arduino IDE上打开“ChatServer”示例:
程序:
#include <Phpoc.h>
PhpocServer server(23);
boolean alreadyConnected = false; // 是否客户端先前已连接
void setup() {
Serial.begin(9600);
while (!Serial)
;
//初始化PHPoC [WiFi] Shield:
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
//Phpoc.begin();
// 开始侦听TCP客户端:
server.begin();
// 打印PHPoC [WiFi] Shield到串口监视器的IP地址:
Serial.print("Chat server address : ");
Serial.println(Phpoc.localIP());
}
void loop() {
// 等待新客户:
PhpocClient client = server.available();
// 当客户端发送第一个字节时,请打个招呼:
if (client) {
if (!alreadyConnected) {
//清除传输缓冲区:
client.flush();
Serial.println("We have a new client");
client.println("Hello, client!");
alreadyConnected = true;
}
if (client.available() > 0) {
// 读取从客户端传入的字节:
char thisChar = client.read();
// 将字节回显给所有连接的客户端:
server.write(thisChar);
// 将字节回显到服务器:
Serial.write(thisChar);
}
}
}
步骤五 测试和结果
在Arduino IDE上打开串行监视器工具以查看输出日志
复制PHPoC Shield的IP地址:
在此示例中,Arduino充当TCP服务器。它需要使用TCP客户端进行测试。TCP客户端可以是PC或智能手机上的任何类型的TCP客户端软件/程序。
在本教程中,我使用基于Windows的软件,即 ezTerm,点击下载:
打开四个ezTerm窗口
输入PHPoC Shield的IP地址和端口号(23)
单击“连接”按钮。
- 从第1个ezTerm窗口向Arduino发送“Client 1:Hello”消息。
- 从第2个ezTerm窗口向Arduino发送“Client 2:Hello”消息。
- 从第3个ezTerm窗口向Arduino发送“Client 3:Hello”消息。
- 从第4个ezTerm窗口向Arduino发送“Client 4:Hello”消息。
- 我们可以在每个ezTerm的接收区域看到回显消息。
查看Arduino IDE串口监视器数据:
[…] (一)Arduino – TCP聊天服务器 […]