CH579 UDP包源端口变成4096

CH579 UDP包源端口变成4096,麻烦帮忙看看image.png

您好,请您确认一下这个数据包确定是您这个Socket,看您的Socket创建的函数,目的IP为4个255,广播模式,但是您抓的包是UDP单播。


您好:

  1. 我设置4个255的目的,是为了接收我运行过程中加入多个不同组(编码过程中不确定,配置的组IP),接收这些组的数据;

  2. 这个UDP包是向组239.255.0.50发送数据;


这个包是我发送的。这个包我是UDP,用sendto函数发送的,sendto函数是可以填目标地址的;


bool CH57xNET_CreatUdpSocket(void)
{
    UINT8 DESIP[4]   = {255,255,255,255};                                        /* 接收广播包,此地址不应更变 */
    SOCK_INF TmpSocketInf;                                                       /* 创建临时socket变量 */
    memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF));                            /* 库内部会将此变量复制,所以最好将临时变量先全部清零 */
    memcpy((void *)TmpSocketInf.IPAddr,DESIP,4);                                 /* 设置目的IP地址 */
    TmpSocketInf.DesPort = 6666;                                                 /* 设置目的端口 */
    TmpSocketInf.SourPort = 6666;                                                /* 设置源端口 */
    TmpSocketInf.ProtoType = PROTO_TYPE_UDP;                                     /* 设置socekt类型 */
    TmpSocketInf.AppCallBack = CH57xNET_UdpServerRecv;                           /* 接收回调函数 */
    TmpSocketInf.RecvStartPoint = (UINT32)SocketRecvBuf;                         /* 设置接收缓冲区的接收缓冲区 */
    TmpSocketInf.RecvBufLen = RECE_BUF_LEN ;                                     /* 设置接收缓冲区的接收长度 */
//    i = CH57xNET_SocketCreat(&SocketId,&TmpSocketInf);                           /* 创建socket,将返回的socket索引保存在SocketId中 */
//    mStopIfError(i);                                                             /* 检查错误 */
    if(CH57xNET_SocketCreat(&SocketId,&TmpSocketInf) == CH57xNET_ERR_SUCCESS)
    {
        return true;
    }
    else
    {
        return false;
    }
}
void net_send(UINT8 *buf, UINT32 *slen, UINT8 *sip, UINT16 port)
{
    CH57xNET_SocketUdpSendTo(SocketId, buf, slen, sip, port);
}
uint8_t group_ip[4] = {239, 255, 0, 50};
net_send(send_buf, &send_len, group_ip, 6666);

这是实现的代码,麻烦帮忙测试一下,谢谢了。


只有登录才能回复,可以选择微信账号登录