ESP8266 SMING TCP sendString()和writeString()之间的差异
我正在使用ESP8266与 我在中找到了这个示例代码ESP8266 SMING TCP sendString()和writeString()之间的差异,tcp,esp8266,sming,Tcp,Esp8266,Sming,我正在使用ESP8266与 我在中找到了这个示例代码 bool tcpServerClientReceive(TcpClient&client,char*数据,int size) { debugf(“应用程序数据回调:%s,%d字节\r\n”,client.getRemoteIp().toString().c_str(),size); debugf(“数据:%s”,数据); client.sendString(“sendString数据\r\n”,false); 客户端.writeString(
bool tcpServerClientReceive(TcpClient&client,char*数据,int size)
{
debugf(“应用程序数据回调:%s,%d字节\r\n”,client.getRemoteIp().toString().c_str(),size);
debugf(“数据:%s”,数据);
client.sendString(“sendString数据\r\n”,false);
客户端.writeString(“writeString数据\r\n”,0);
如果(strcmp(数据,“关闭”)==0)
{
debugf(“交割客户”);
client.close();
};
返回true;
}
在这个示例代码中,
sendString()
和writeString()
之间有什么区别?似乎没有什么区别。结果是将字符串数据发送到另一个TCP方。示例中使用的客户端对象是TcpClient
的实例,而TcpClient又是TcpConnection
对象的派生类TcpClient
确实有一个方法,该方法是类TcpConnection
的方法(类TcpClient
的父类)
实际上,有两种重载方法
因此,排除所有这些信息,基本上,.sendString
就是这样做的(在该方法中它调用该方法):
该方法的作用是:
u16_t available = getAvailableWriteSize();
if (available < len)
{
if (available == 0)
return -1; // No memory
else
len = available;
}
WDT.alive();
err_t err = tcp_write(tcp, data, len, apiflags);
if (err == ERR_OK)
{
//debugf("TCP connection send: %d (%d)", len, original);
return len;
} else {
//debugf("TCP connection failed with err %d (\"%s\")", err, lwip_strerr(err));
return -1;
}
u16\u t available=getAvailableWriteSize();
如果可用(可用
因此,从外观上看,一个是异步的(.sendString
),另一个是不异步的(.writeString
)。示例中使用的客户机对象是TcpClient
的实例,而TcpClient又是TcpConnection
对象的派生类TcpClient
确实有一个方法,该方法是类TcpConnection
的方法(类TcpClient
的父类)
实际上,有两种重载方法
因此,排除所有这些信息,基本上,.sendString
就是这样做的(在该方法中它调用该方法):
该方法的作用是:
u16_t available = getAvailableWriteSize();
if (available < len)
{
if (available == 0)
return -1; // No memory
else
len = available;
}
WDT.alive();
err_t err = tcp_write(tcp, data, len, apiflags);
if (err == ERR_OK)
{
//debugf("TCP connection send: %d (%d)", len, original);
return len;
} else {
//debugf("TCP connection failed with err %d (\"%s\")", err, lwip_strerr(err));
return -1;
}
u16\u t available=getAvailableWriteSize();
如果可用(可用
因此,从外观上看,一个是异步的(.sendString
),另一个不是(.writeString
)