函数说明:
/** * 获取tcp连接状态 * @return result of tcp connect * CLOSED = 0, * LISTEN = 1, * SYN_SENT = 2, * SYN_RCVD = 3, * ESTABLISHED = 4, * FIN_WAIT_1 = 5, * FIN_WAIT_2 = 6, * CLOSE_WAIT = 7, * CLOSING = 8, * LAST_ACK = 9, * TIME_WAIT = 10 */ uint8_t status(); 3.2 发送数据操作发送操作的源码可以查阅 Print.cpp
3.2.1 write - 发送数据到client连接的server函数说明:
/** * 发送数据 * @param str 需要单个字节 * @return size_t 成功写入发送缓冲区的字节数 */ size_t write(uint8_t); /** * 发送数据 * @param str 需要发送字符串或者字符数组 * @return size_t 成功写入发送缓冲区的字节数 */ size_t write(const char *str); /** * 发送数据 * @param buffer 需要发送字符串或者字符数组 * @param size 数据字节数 * @return size_t 成功写入发送缓冲区的字节数 */ size_t write(const char *buffer, size_t size) /** * 发送数据 * @param stream 数据流,比如文件流 * @return size_t 成功写入发送缓冲区的字节数 */ size_t write(Stream& stream);注意点:
write(uint8_t)函数是发送数据的底层方法,也就是说print、println底层也是调用write;
write(const char str) 函数底层是调用 write(const char buffer, size_t size),通过strlen计算长度;
size_t write(const char *str) { if(str == NULL) return 0; return write((const uint8_t *) str, strlen(str)); } 3.2.2 print - 发送数据到client连接的server函数说明:
/** * 发送数据 * @param FlashStringHelper 需要发送的字符串,字符串存在flash中(PROGMEM) * @return size_t 成功写入发送缓冲区的字节数 */ size_t print(const __FlashStringHelper *); /** * 发送数据 * @param String 需要发送的字符串,字符串存在内存中 * @return size_t 成功写入发送缓冲区的字节数 */ size_t print(const String &); /** * 发送数据 * @param String 需要发送的字符数组,字符数组存在内存中 * @return size_t 成功写入发送缓冲区的字节数 */ size_t print(const char[]); /** * 发送数据 * @param String 需要发送的字符 * @return size_t 成功写入发送缓冲区的字节数 */ size_t print(char); /** * 发送数据 * @param String 需要发送的数据,多是数字,转成对应的进制,一般都是传输数字型数据 * @return size_t 成功写入发送缓冲区的字节数 */ size_t print(unsigned char, int = DEC); size_t print(int, int = DEC); size_t print(unsigned int, int = DEC); size_t print(long, int = DEC); size_t print(unsigned long, int = DEC); size_t print(double, int = 2);注意点:
读者需要特别关注 print(const __FlashStringHelper *) 这个函数,以后代码内存优化需用用到;
常见用法:
函数说明:
/** * 发送数据,并且加上换行符 "\r\n" * @param FlashStringHelper 需要发送的字符串,字符串存在flash中(PROGMEM) * @return size_t 成功写入发送缓冲区的字节数 */ size_t println(const __FlashStringHelper *); /** * 发送数据,并且加上换行符 "\r\n" * @param String 需要发送的字符串,字符串存在内存中 * @return size_t 成功写入发送缓冲区的字节数 */ size_t println(const String &s); /** * 发送数据,并且加上换行符 "\r\n" * @param String 需要发送的字符数组,字符数组存在内存中 * @return size_t 成功写入发送缓冲区的字节数 */ size_t println(const char[]); /** * 发送数据,并且加上换行符 "\r\n" * @param String 需要发送的字符 * @return size_t 成功写入发送缓冲区的字节数 */ size_t println(char); /** * 发送数据,并且加上换行符 "\r\n" * @param String 需要发送的数据,多是数字,转成对应的进制,一般都是传输数字型数据 * @return size_t 成功写入发送缓冲区的字节数 */ size_t println(unsigned char, int = DEC); size_t println(int, int = DEC); size_t println(unsigned int, int = DEC); size_t println(long, int = DEC); size_t println(unsigned long, int = DEC); size_t println(double, int = 2); /** * 发送换行符 "\r\n" * @return size_t 成功写入发送缓冲区的字节数 */ size_t println(void);注意点:
println系列其实就是在print系列的基础上加上了换行符 "\r\n";
3.3 响应操作 3.3.1 available() - 返回接收缓存区可读取字节数函数说明:
/** * 返回接收缓存区可读取字节数 * @return int 接收缓冲区可读取字节数 */ int available();注意点:
通过此方法,我们可以判断发送出去的请求是否有响应信息;
3.3.2 availableForWrite() - 返回发送缓冲区剩余可写字节数函数说明:
/** * 返回发送缓冲区剩余可写字节数 * @return int 发送缓冲区剩余可写字节数 */ size_t availableForWrite();注意点:
一般来说,调用发送数据操作之后,并不会立刻发送出去,而是把数据放入发送缓冲区,通过机制不断读取发送缓冲区的数据不断发送出去;
可以通过此函数判断请求是否发送完毕;
3.3.3 read() - 读取接收缓冲区一个字节函数说明:
/** * 读取接收缓冲区一个字节 * @return int 一字节数据 */ int read();注意点:
此函数读取完数据后,会把该数据从缓冲区清掉;
3.3.4 read(buf,size) - 读取接收缓冲区size大小的字节数据