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.

[参考译文] CCS/TM4C1294NCPDT:TI-RTOS UDP 关闭

Guru**** 2522770 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/907732/ccs-tm4c1294ncpdt-ti-rtos-udp-close

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

MCU: TM4C1294NCPDT

RTOS 版本:tirtos_tivac_2_16_01_14

NDK 版本: NDK_2_25_00_09

你(们)好

我有一些问题。

UDP sento 失败、套接字关闭崩溃。

当 sento 失败并且我使用 fdClose (FD)时、MCU 不再响应。

我使用调试工具、发现问题。

这里似乎是无限循环。

HIF = BindIPHost2IF (((IPN) PTR_ipmreq->IMR_interface.s_addr);
如果(!HIF)
返回(EINVAL);

这是我的代码 UDP 套接字:

int fd =(int) socket (AF_iNet、SOCK_DGRAM、IPPROTO_UDP);

if (fd < 0){
return -1;
}
struct ip_mreq mreq;
struct sockaddr_in sa ={0};

int enable = 1;
int &= 255;

if (setsockopt ((sockpit)、fb、USEADDR socket、SO_enable) sizeof (enable)){
转至 err;
}
if (setsockopt ((socket) fd、SOL_socket、SO_REUSEPORT、ENABLEN、sizeof (enable))){
转至错误
;}
if (setsockopt ((socket) fd、SOL_socket、SO_broadcast、enable、sizeof (enable))){
转至错误;
}

if (setsockopt ((socket) fd、IPPROTO_IP、IP_TTL、&hops、sizeof (hops))){
goto err;
}

mreq.IMR_multiaddr.s_addr = htonl (0xE00000FB);
mreq.IMR_interface = interface_adopt;
if (setsockfp、ip_socomb)(sock+) mreq、sizeof (mreq))){
goto err;
}

sa.sin_family = AF_iNet;
sa.sin_port = ntohs (5353);
sa.sin_addr.s_addr = INADDR_ANY;

if (bind ((sockpit) fd、(struct sockaddr*) sa)、 sizeof (sa)){
goto err;
}

send_addr->sin_family = AF_iNet;
send_addr->sin_addr.s_addr = mreq.IMR_multiaddr.s_addr;
send_addr->sin_port = ntohs (5353); 

如何检查问题?

艾伦

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

    您好、Allen、

    您能否确认应用程序没有其他问题? 请暂停目标并打开 ROV Classic->BIOS->扫描错误,以确保没有堆栈溢出或其他问题。

    Todd

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

    你(们)好

    我确认 ROV Classic->BIOS->Scan for Errors 和  ROV Classic->Task->CallStacks,下图:

    艾伦

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

    你(们)好

    我的应用流程是

    套接字创建

    绑定

    struct timeval tv ={1、0};
    int fdStatus = fdSelect (0、NULL、NULL、NULL、&tv);
    UARTprintf ("fdStatus =%d\n"、fdStatus);  fdStatus 始终为0

    RET =传感器

    if (ret < 0)

    转至 net_err;

    net_err:

    if (socket_FD > 0)

    fdClose (socket_fd );

    fdClose 函数未完成。

    如果流量有任何问题、请纠正我的问题。

    感谢您的回复。

    艾伦

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

    你(们)好

    这家酒店不会每次都失败。

    此应用程序用于 mdns。

    如果您需要更多信息、请告诉我。

    我真的需要解决这个问题。

    艾伦

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

    你(们)好

    我解决了这个问题。

    在 fdclose 之前、我设置 sock 选项标志 IP_DROP_Membership 和 fdclose 传递。

    setsockopt (FD、IPPROTO_IP、IP_DROP_Membership、&mreq、sizeof (mreq) 

    谢谢

    艾伦