首页 > 解决方案 > 当我尝试连接到服务器时,LWIP 中的路由错误

问题描述

我尝试使用 LWIP 连接到远程主机,但是当我尝试连接时失败并出现路由错误。

我使用 netconn、tcp 甚至 udp 尝试了一些不同的设置,但是当我尝试连接时所有设置都失败了。所以我认为在调用connect之前我在设置中遗漏了一些相当重要的东西,但我不知道出了什么问题。

int main(void)
{
  HAL_Init();
  SystemClock_Config();

  MX_GPIO_Init();
  MX_USART3_UART_Init();
  Print("USART init ok\n");
  MX_USB_OTG_FS_PCD_Init();
  Print("USB pcd init ok\n");
  MX_LWIP_Init();
  Print("LWIP init ok\n");

  struct tcp_pcb * tcp_client = {0};
  tcp_client = tcp_new();


  if(tcp_client != 0)
  {
      Print("tcp_new ok\n");
      err_t error = {0};
      error = tcp_bind(tcp_client, IP_ADDR_ANY);

      if(error == ERR_OK)
      {
          Print("tcp_bind ok\n");
          err_t errorConnect = {0};
          struct ip4_addr remoteIP;
          IP4_ADDR(&remoteIP, 192, 168, 127, 250);
          errorConnect = tcp_connect(tcp_client, &remoteIP, 4002, tcpConnect);

          if(errorConnect == ERR_OK)
          {
              Print("tcp_connect ok\n");
          }
          else
          {
// I end up here with ERR_RTE as a result
              Print("Error: tcp_connect \n");
          }
      }
      else
      {
          Print("Error: tcp_bind\n");
      }
  }
  else
  {
      Print("Error: tcp_new faild\n");
  }

  Print("DONE!\n\n");

  while (1)
  {

  }
}

我使用的是 STM32CubeIDE 和 LWIP 已添加为中间件,我使用的卡是 ST nucleo F746ZG

该卡直接连接到我的计算机,我可以在计算机的网络设置中看到它已连接。所以某种形式的谈判正在发生。

标签: ciotethernetlwipstm32cubeide

解决方案


我现在通过设置本地 IP 地址和网络掩码让它工作,我认为 IPADDR_ANY 是要走的路,但我需要设置一个特定的 IP 地址才能成功连接。


推荐阅读