CH579 UDP包源端口变成4096,麻烦帮忙看看
热门产品 :
CH32V317: 互联型青稞RISC-V MCU
CH579 UDP包源端口变成4096,麻烦帮忙看看
您好,请您确认一下这个数据包确定是您这个Socket,看您的Socket创建的函数,目的IP为4个255,广播模式,但是您抓的包是UDP单播。
您好:
我设置4个255的目的,是为了接收我运行过程中加入多个不同组(编码过程中不确定,配置的组IP),接收这些组的数据;
这个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);
这是实现的代码,麻烦帮忙测试一下,谢谢了。