ESP8266 Developer Zone The Official ESP8266 Forum 2016-03-11T15:02:19+08:00 https://bbs.espressif.com:443/feed.php?f=7&t=1730 2016-03-11T15:02:19+08:00 2016-03-11T15:02:19+08:00 https://bbs.espressif.com:443/viewtopic.php?t=1730&p=6074#p6074 <![CDATA[Re: 关于espconn_disconnect()的问题]]>
我们测试是正常的断开流程,您能否换一个 TCP client 测试,或者多试几次以确认。
会不会是测试时,恰巧遇到网络状态不好等其他原因,导致异常断开。

Statistics: Posted by ESP_Faye — Fri Mar 11, 2016 3:02 pm


]]>
2016-03-08T17:50:24+08:00 2016-03-08T17:50:24+08:00 https://bbs.espressif.com:443/viewtopic.php?t=1730&p=6036#p6036 <![CDATA[Re: 关于espconn_disconnect()的问题]]>
Espressif_Faye wrote:
您好,

麻烦基于 ESP8266_NONOS_SDK_V1.5.2 更新附件 lib 测试,给您带来不便,深感抱歉。

如果您的问题仍未解决,请再告知。


感谢贵司的努力。粗略测试发现,这个库虽然解决了无法disconnect的问题,但是看上去好像是非正常关断,客户端貌似没有收到正确的结束包。

我用原来的库是这样解决的:发送1个byte的垃圾数据之后,可以正常关断连接:

Code:

            ret = espconn_disconnect(mconn_array[index]->conn); //永远返回-5
            if(ret != 0)
            {
               uint8 shit = 0;
               espconn_send(mconn_array[index]->conn, &shit, 1);
               ret = espconn_disconnect(mconn_array[index]->conn);   //返回值正常
            }

现在这个新的库无需发送垃圾数据也能关闭连接,但效果类似强制中断的样子。

Statistics: Posted by stupiid — Tue Mar 08, 2016 5:50 pm


]]>
2016-03-08T09:42:12+08:00 2016-03-08T09:42:12+08:00 https://bbs.espressif.com:443/viewtopic.php?t=1730&p=6027#p6027 <![CDATA[Re: 关于espconn_disconnect()的问题]]>
麻烦基于 ESP8266_NONOS_SDK_V1.5.2 更新附件 lib 测试,给您带来不便,深感抱歉。

如果您的问题仍未解决,请再告知。
liblwip_for_ESP8266_NONOS_SDK_V1.5.2.zip

Statistics: Posted by ESP_Faye — Tue Mar 08, 2016 9:42 am


]]>
2016-02-15T08:43:22+08:00 2016-02-15T08:43:22+08:00 https://bbs.espressif.com:443/viewtopic.php?t=1730&p=5743#p5743 <![CDATA[Re: 关于espconn_disconnect()的问题]]>
Espressif_Faye wrote:
您好,

麻烦提供您的测试代码以供分析。

感谢您对 ESP8266 的关注!

你好。这是关闭连接的代码。mconn_array[j]->conn是server的struct espconn *指针。

Code:

   uint8 count = 0;
   remot_info *premot = NULL;
   if (espconn_get_connection_info(mconn_array[j]->conn, &premot, 0) == ESPCONN_OK)
   {
      for (count = 0; count < mconn_array[j]->conn->link_cnt; count++)
      {
         mconn_array[j]->conn->proto.tcp->remote_port = premot[count].remote_port;
         mconn_array[j]->conn->proto.tcp->remote_ip[0] = premot[count].remote_ip[0];
         mconn_array[j]->conn->proto.tcp->remote_ip[1] = premot[count].remote_ip[1];
         mconn_array[j]->conn->proto.tcp->remote_ip[2] = premot[count].remote_ip[2];
         mconn_array[j]->conn->proto.tcp->remote_ip[3] = premot[count].remote_ip[3];
         //ret = espconn_abort(mconn_array[j]->conn);
         ret = espconn_disconnect(mconn_array[j]->conn);
      }
   }
   espconn_delete(mconn_array[j]->conn);

Statistics: Posted by stupiid — Mon Feb 15, 2016 8:43 am


]]>
2016-02-04T15:11:40+08:00 2016-02-04T15:11:40+08:00 https://bbs.espressif.com:443/viewtopic.php?t=1730&p=5672#p5672 <![CDATA[Re: 关于espconn_disconnect()的问题]]>
麻烦提供您的测试代码以供分析。

感谢您对 ESP8266 的关注!

Statistics: Posted by ESP_Faye — Thu Feb 04, 2016 3:11 pm


]]>
2016-02-03T14:03:59+08:00 2016-02-03T14:03:59+08:00 https://bbs.espressif.com:443/viewtopic.php?t=1730&p=5652#p5652 <![CDATA[关于espconn_disconnect()的问题]]>
我在调试tcp server时遇到了奇怪的问题,具体如下:

我在esp8266上建立了一个tcp server,将若干个client连接上该server。
如果所有client连接都未中断,则可以使用espconn_get_connection_info()获取server连接信息后调用espconn_disconnect()逐个关断所有连接;
一旦有任何一个client主动关闭连接,则进行以上操作调用espconn_disconnect()关闭剩余连接时返回错误值-5:ESPCONN_INPROGRESS, 无法关断,这也导致无法关闭tcp server。
一旦断开的client重新连上server,则又可以关闭所有连接和server了。

请问这是什么原因?如何解决?

Statistics: Posted by stupiid — Wed Feb 03, 2016 2:03 pm


]]>