im essayant d'utiliser lwip pour se connecter à un hôte distant mais im échoué et obtenez une erreur de routage lorsque j'essaie de vous connecter.
J'ai essayé quelques configurations différentes à l'aide de Netconn, TCP et même UDP, mais toutes les configurations échouer lorsque je tente de vous connecter. Je pense donc que je manque quelque chose d'assez important dans la configuration avant d'appeler Connect, mais je ne peux pas figurer ce qui ne va pas. P>
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) { } }
4 Réponses :
Je l'ai fait fonctionner maintenant en mettant en place une adresse IP locale et de Netmask, iPaddr_any était la voie à suivre, mais j'avais besoin de définir une iPaddress spécifique pour qu'il réussisse à vous connecter. P>
Vous pouvez vous connecter comme dans l'exemple suivant à l'aide de NetConn
struct netconn *nc; ip_addr_t remote_ip; ip4addr_aton("192.168.127.250", &remote_ip); nc = netconn_new(NETCONN_TCP); volatile err_t res; res = netconn_connect(nc, &remote_ip, 4002);
Configuration de l'adresse IP locale et de Netmask pourrait le faire fonctionner. Mais la cause première de l'ERR_RTE (problème de routage) est que la pile TCP / IP n'a pas fini de configurer l'IP / Netmask / GW avant que NetConn_Connect soit appelé. Cela devrait être une erreur parce que la carte IP / Netmask / GW est probablement vide à cette époque. P>
La solution serait retarder NetConn_Connect () jusqu'à ce que la configuration IP appropriée soit effectuée. P>
J'ai le même problème que je n'ai pas pu résoudre, même si je suis sur un autre appareil.
Avez-vous essayé de changer à p> sinon comme indiqué ICI P> Si le port est spécifié sous zéro, la fonction sélectionne un port disponible. STRUT > em> p> p>
Comment le système est-il connecté au réseau? Où est l'hôte que vous essayez de vous connecter? Sur le même réseau? Sur un réseau différent mais toujours "dans le même bâtiment"? Quelque part sur un réseau distant?