搜索
bottom↓
回复: 1

请教版主LWIP问题,

[复制链接]

出0入0汤圆

发表于 2010-12-8 11:38:57 | 显示全部楼层 |阅读模式
我的网页程序是10S刷新一次,但过一段时间后(10多分)就会在串口调试助手中发现这个
Assertion "recv_tcp: recv for wrong pcb!" failed at line 201 in F:\h\stm107\STM32_F107_lwIP\lwIP\src\api\api_msg.c
然后再也访问不了网页了!

这个问题应该怎么解决呢??

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-12-8 16:28:01 | 显示全部楼层
while (1) {
    newconn = netconn_accept(conn);
      if (newconn != NULL) {
      struct netbuf *buf;
      void *data;
      u16_t len;

      while ((buf = netconn_recv(newconn)) != NULL) {
                do {
             netbuf_data(buf, &data, &len);
             err = netconn_write(newconn, "<b>HELLO", 10, NETCONN_COPY);
             err = netconn_write(newconn, data, len, NETCONN_COPY);
        } while (netbuf_next(buf) >= 0);
        netbuf_delete(buf);
      }
      printf("Got EOF, looping\n");
      netconn_close(newconn);
      netconn_delete(newconn);
    }
  }
}
我看例程中有这么一句话,
while((buf = netconn_recv(conn)) != NULL)
{
}
我写成这样的话连一次网页也访问不到,我觉得这句话不太对,第一次没问题可以进得去,可是执行完后再执行时,就因等待信号量而阻塞,执行不了后续的
netconn_close(conn);
  netconn_delete(conn);
后来我把这个改为: if((buf = netconn_recv(conn)) != NULL)
while (1) {

    /* Grab new connection. */
    newconn = netconn_accept(conn);
    printf("accepted new connection %p\n", newconn);
    /* Process the new connection. */
    if (newconn != NULL) {
      struct netbuf *buf;
      void *data;
      u16_t len;
      
      if((buf = netconn_recv(newconn)) != NULL) {
        printf("Recved\n");
        do {
             netbuf_data(buf, &data, &len);
             err = netconn_write(newconn, "<b>HELLO", 10, NETCONN_COPY);
             err = netconn_write(newconn, data, len, NETCONN_COPY);
#if 0
            if (err != ERR_OK) {
              printf("tcpecho: netconn_write: error \"%s\"\n", lwip_strerr(err));
            }
#endif
        } while (netbuf_next(buf) >= 0);
        netbuf_delete(buf);
      }
      printf("Got EOF, looping\n");
      /* Close connection and discard connection identifier. */
      netconn_close(newconn);
      netconn_delete(newconn);
    }
  }
}
不知道这是不是问题所在?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 13:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表