TCP Client
顾名思义,创建在TCP通讯协议基础上的客户端
TCP Server
创建在TCP通讯协议基础上的服务端web
相关方法:缓存
int connect(IPAddress ip, uint16_t port) int connect(IPAddress ip, uint16_t port, int32_t timeout) int connect(const char *host, uint16_t port) int connect(const char *host, uint16_t port, int32_t timeout)
和服务器创建链接,链接指定IP或域名,链接成功返回1,失败返回0;服务器
size_t write(uint8_t data) size_t write(const uint8_t *buf, size_t size) size_t write_P(PGM_P buf, size_t size) size_t write(Stream &stream)
发送数据,发送成功返回发送字节数,失败返回0; 除了用write()方法外也能够用print()等方法发送数据;svg
int available()
返回可读取数据长度,若是没有数据可读取则返回0;函数
int read() int read(uint8_t *buf, size_t size)
从接收缓存读取数据并返回读取到的数据字节数,若是返回-1则表示读取失败,读取过的数据会从接收缓存删除;oop
int peek()
读取首字节数据,但并不从接收缓存中删除它;测试
void flush()
清空当前接收缓存;ui
void stop()
关闭客户端,释放资源;spa
uint8_t connected()
返回当前客户端是否与服务器创建链接;指针
IPAddress remoteIP() const IPAddress remoteIP(int fd) const
返回服务器IP地址;
uint16_t remotePort() const uint16_t remotePort(int fd) const
返回服务器端口号;
IPAddress localIP() const IPAddress localIP(int fd) const
返回本地IP地址;
uint16_t localPort() const uint16_t localPort(int fd) const
返回本地端口号;
代码:
#include <WiFi.h> const char *ssid = "Wifi名称"; const char *password = "wifi密码"; const IPAddress serverIP(192,168,1,5); //目标地址 uint16_t serverPort = 2525; //目标服务器端口号 WiFiClient client; //声明一个客户端对象,用于与服务器进行链接 void setup() { Serial.begin(115200); Serial.println(); WiFi.mode(WIFI_STA); //站点模式 WiFi.setSleep(false); //关闭STA模式下wifi休眠,提升响应速度 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(2500); Serial.print("."); } Serial.println("已链接"); Serial.print("本机ip地址:"); Serial.println(WiFi.localIP()); Serial.println("尝试访问服务器"); if (client.connect(serverIP, serverPort)) //尝试访问目标地址 { Serial.println("访问成功"); client.print("Hello world!"); //向服务器发送“hello world” while (client.connected()) //若是处于链接状态 { if(client.available()) { Serial.println("查询信息:"); if (client.available()) //若是有数据可读取 { String line = client.readStringUntil('\n'); //读取数据到换行符 Serial.print("收到消息:"); Serial.println(line); client.write(line.c_str()); //将收到的数据回发 //c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同 } } } Serial.println("关闭当前链接"); client.stop(); //关闭客户端 } else { Serial.println("访问失败"); client.stop(); //关闭客户端 } } void loop() { }
结果:
总结:
1.若是链接不上packet sender,把右下角模式切换为自定义ip便可 2.测试时,要把 保持TCO长链接选项 勾选上,否则程序会自动跳出while()循环 3.无法发送中文消息,只能发送ASCII(待改进)