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.

TDA2SX: Help:如何在TDA2中实现IPV6的功能,再通过UDP发送报文数据?

Part Number: TDA2SX


在TDA2中使用IPV6地址协议,来发送UDP的报文数据。

通过创建SOCKet的方式,失败,代码如下:


static char src[] = "fd11::100";
static char dst[] = "fd11::200";

void main_Tx()
{
int udp6_socket, ret, ttl, on, addr_len;
struct sockaddr_in6 saddr;
struct sockaddr_in6 daddr;
char buffer[] = "Hello World6";

Vps_printf(" DanS-----Network: start IPv6 interface main\n");

if ((inet_pton(AF_INET6, (char *)&src[0], &saddr.sin6_addr)) != 1)
{
Vps_printf("invalid ipv6 addr \r\n");
return ;
}

if ((inet_pton(AF_INET6, (char *)&dst[0], &daddr.sin6_addr)) != 1)
{
Vps_printf("invalid ipv6 addr \r\n");
return ;
}

addr_len = sizeof(struct sockaddr_in6);
saddr.sin6_family = AF_INET6;
saddr.sin6_port = htons(30000);

daddr.sin6_family = AF_INET6;
daddr.sin6_port = htons(40000);


udp6_socket = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
if (udp6_socket == -1)
{
Vps_printf("create udp6_socket fail\r\n");//代码运行打印在这里

Vps_printf("failed socket create (%d)\n",fdError());
return;
}


if (bind(udp6_socket, (struct sockaddr *)&saddr, addr_len))
{
Vps_printf("udp6 bind addr fail, err : %d\r\n", 0);
if( udp6_socket != (-1) )
fdClose( udp6_socket );
Vps_printf("\n== End Timeout Test ==\n\n");
//close(udp6_socket);
return;
}

/* 发送 */
ret = sendto(udp6_socket, &buffer[0], sizeof(buffer), 0, (struct sockaddr *)&daddr, addr_len);
if (ret > 0)
{
Vps_printf("udp6 send %d bytes success \r\n", ret);
}


fdClose( udp6_socket );
//close(udp6_socket);
return;
}

以上代码在调用,报错在黄色部分。求帮忙查看如何解决。

1.我在TDA2中,已经将对应的usecase的NDK_ENABLE_IPV6开关打开了。

2.为了使IPV6正常的运行还需要修改哪些部分?能否提供一下示例。

非常感谢。