LwIP TCP连接无法建立求助:RST/ACK响应及路由异常
TCP连接建立失败排查求助
问题现象
- 板卡调用
tcp_connect()发起TCP连接,Wireshark抓包显示板卡已发送首个SYN握手包,但电脑返回带RST+ACK标志的TCP包终止连接,后续出现目标端口不可达的ICMP消息 - 调试模式下,
tcp_connect()返回ERR_RTE(路由错误)并进入错误处理逻辑;但正常运行时不会进入该错误分支
相关代码
/* USER CODE BEGIN 0 */ extern struct netif gnetif; struct tcp_pcb* tcp_echoserver_pcb; /* USER CODE END 0 */ /** * @brief The application entry point. * @retval int */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_LWIP_Init(); /* USER CODE BEGIN 2 */ ip_addr_t myIPADDR,destip; IP_ADDR4(&myIPADDR,192,168,33,1); IP_ADDR4(&destip,192,168,33,101); tcp_echoserver_pcb = tcp_new(); err_t err = tcp_bind(tcp_echoserver_pcb, &myIPADDR, 8); err_t e = tcp_connect(tcp_echoserver_pcb, &destip, 8, confail); if (e == ERR_RTE) { while(1) { HAL_GPIO_TogglePin(GPIOB, LD3_Pin); HAL_Delay(500); } } /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ ethernetif_input(&gnetif); sys_check_timeouts(); } /* USER CODE END 3 */ }
排查需求
请求协助定位问题根因,如需更多信息可补充提供
内容的提问来源于stack exchange,提问作者confusedfresher
相关产品推荐
相关产品推荐

