硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2402|回复: 1
收起左侧

[FreeRTOS-TCP] 请教下, 使用FreeRTOS+LwIP 开发版做客户端断开后不能够重新连接 ?

[复制链接]

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
发表于 2017-11-19 11:52:16 | 显示全部楼层 |阅读模式
请教下, 使用FreeRTOS+LwIP 开发版做客户端断开后不能够重新连接 ?

具体描述如下:

1、开发版作为客户端使用
2、初次上电能够正常通讯,也就是 开发板可以发送数据到服务器端,服务器端也能够发送数据到开发版客户端,服务器端断开、连接操作都正常
3、是不是开发版做客户端不能够主动断开 与服务器之间的连接啊 ?????
4、按下开发版客户端某个定义的按键后,重新再进行连接时,此时服务器不能够与开发版正常连接,程序貌似死在了如下函数里面,
     有哪些原因会出现这样的问题啊 ???????????


/**
* Is called every TCP_FAST_INTERVAL (250 ms) and process data previously
* "refused" by upper layer (application) and sends delayed ACKs.
*
* Automatically called from tcp_tmr().
*/
void
tcp_fasttmr(void)
{
  struct tcp_pcb *pcb;

  ++tcp_timer_ctr;

tcp_fasttmr_start:
  pcb = tcp_active_pcbs;

  while (pcb != NULL) {
    if (pcb->last_timer != tcp_timer_ctr) {
      struct tcp_pcb *next;
      pcb->last_timer = tcp_timer_ctr;
      /* send delayed ACKs */
      if (pcb->flags & TF_ACK_DELAY) {
        LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n"));
        tcp_ack_now(pcb);
        tcp_output(pcb);
        pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);
      }

      next = pcb->next;

      /* If there is data which was previously "refused" by upper layer */
      if (pcb->refused_data != NULL) {
        tcp_active_pcbs_changed = 0;
        tcp_process_refused_data(pcb);
        if (tcp_active_pcbs_changed) {
          /* application callback has changed the pcb list: restart the loop */
          goto tcp_fasttmr_start;
        }
      }
      pcb = next;
    } else {
      pcb = pcb->next;
    }
  }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2017-11-19 12:07:38 | 显示全部楼层
LwIP不太清楚,TCPnet可以随意断开操作。
估计你的这个LwIP是哪里的程序还有问题,再查查。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 16:52 , Processed in 0.163837 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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