Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ESP8266 SMING TCP sendString()和writeString()之间的差异_Tcp_Esp8266_Sming - Fatal编程技术网

ESP8266 SMING TCP sendString()和writeString()之间的差异

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(

我正在使用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(“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