This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] J721EXSOMXEVM:udp_send:没有到 192.168.3.1 的路由

Guru**** 2489685 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1557766/j721exsomxevm-udp_send-no-route-to-192-168-3-1

器件型号:J721EXSOMXEVM


工具/软件:

您好、

我尝试使用 PDK 中的 enet_lwip 示例、添加了一个小的 udp_client 线程、该线程尝试向服务器发送一些消息。

服务器 IP:192.168.3.1
客户端 IP:192.168.3.30

我在  LWIP_APP_init 中添加了一个应用、我们把它称为 CHRIS_UDP_APP、如果 CHRIS_UDP_THREAD 代码是 udp_server、那么它似乎在某种程度上起作用、例如、我可以从 Linux PC 上运行的客户端接收此服务器端口上的数据。

但是、如果我将 CHRIS_UDP_THREAD 代码配置为 udp_client、则会得到错误 udp_send:没有到服务器 IP 地址的路由。

udp_client 线程:

    struct sockaddr_in si_other;
	int s;
    socklen_t slen = sizeof(si_other);
	char message[64];
	char serv_addr[] = "192.168.3.1";
	int PORT = 1264;

	if ( (s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1)
	{
		puts("socket failed");
		return;
	}

	memset((char *) &si_other, 0, sizeof(si_other));
	si_other.sin_family = AF_INET;
	si_other.sin_port = htons(PORT);
	
	if (inet_aton(serv_addr , &si_other.sin_addr) == 0) 
	{
		fprintf(stderr, "inet_aton() failed\n");
		return;
	}

	while(1)
	{
        sprintf(message, "Hello from TI client");
		
		//send the message
		if (sendto(s, message, strlen(message) , 0 , (struct sockaddr *) &si_other, slen)==-1)
		{
			puts("sendto() failed");
			return;
		}
	}


注意:我已禁用配置文件中的所有应用程序、  

#define LWIP_CHARGEN_APP 0

#define LWIP_DNS_APP 0
#define LWIP_HTTPD_APP 0
//#define LWIP_HTTPD_APP_NETCONN 0
/*将其设置为 1 以使用 netconn http 服务器、
*否则,原始 API 服务器将被使用。 */
/*#define LWIP_HTTPD_APP_NETCONN */
#define LWIP_NETBIOS_APP 0
#define LWIP_NetIO_APP 0
#define LWIP_MDNS_APP 0
#define LWIP_MQT_APP 0
#define LWIP_PING_APP 0
#define LWIP_RTP_APP 0
#define LWIP_SHELL_APP 0
#define LWIP_SNMP_APP 0
//尚不支持
#define LWIP_SNTP_APP 0
#define LWIP_SOCKET_EXAMPLE_APP 0
#define LWIP_TCPECHO_APP 0
#define LWIP_TCPECHO_APP_NETCONN 0
/*将此项设置为 1 以使用 netconn cpechoc 服务器、
*否则,原始 API 服务器将被使用。 */
/*#define LWIP_TCPECHO_APP_NETCONN */
#define LWIP_TFTP_APP 0
#define LWIP_UDPECHO_APP 0
#define LWIP_LWIPERF_APP 0
//实验端口
#define LWIP_UDPERF_APP 0
向配置头文件添加了以下内容:
#define LWIP_PORT_INIT_IPADDR (addr) IP4_ADDR ((addr)、192,168、3、30)
#define LWIP_PORT_INIT_GW (addr) IP4_ADDR ((addr)、192,168、3、1)
#define LWIP_PORT_INIT_NETMASK (addr) IP4_ADDR ((addr)、255,255,255,255、0)

 还 将其添加到了 test.c 中、

#if LWIP_IPv4
LWIP_PORT_INIT_GW (&GW);
LWIP_PORT_INIT_IPADDR (&ipaddr);
lwip_port_init_netmask (&netmask);
//ip4_addr_set_zero (&GW);
//ip4_addr_set_zero (&ipaddr);
//ip4_addr_set_zero (&netmask);
#if USE_ETHERNET_TCPIP
谢谢、
摩西