本帖最后由 zhjerry 于 2022-5-28 20:29 编辑
使用307EVT中的UdpClient例程测试,添加9行代码如下。测试结果两种主动发送方式都返回代码0x1C,发送长度0,显然都没有发送成功。
但是例程中接收后发送的方式都是可以。但是需要主动发送的时候怎么处理?
void WCHNET_CreatUdpSocket(void)
{
u8 i;
SOCK_INF TmpSocketInf; /* 创建临时socket变量 */
memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); /* 库内部会将此变量复制,所以最好将临时变量先全部清零 */
memcpy((void *)TmpSocketInf.IPAddr,DESIP,4); /* 设置目的IP地址 */
TmpSocketInf.DesPort = 2099;
TmpSocketInf.SourPort = srcport; /* 设置源端口 */
TmpSocketInf.ProtoType = PROTO_TYPE_UDP; /* 设置socekt类型 */
TmpSocketInf.RecvStartPoint = (u32)SocketRecvBuf[SocketId]; /* 设置接收缓冲区的接收缓冲区 */
TmpSocketInf.RecvBufLen = RECE_BUF_LEN; /* 设置接收缓冲区的接收长度 */
i = WCHNET_SocketCreat(&SocketId,&TmpSocketInf); /* 创建socket,将返回的socket索引保存在SocketId中 */
printf("WCHNET_SocketCreat %d srcport %d\r\n",SocketId,srcport);
mStopIfError(i);
//Newly added lines to test UDP send! Both got len=0, i=0x1c!
u32 len = 48;
u8 ip_addr[4] = {192,168,1,118};
memset(MyBuf, 0, 48); MyBuf[0] = 0x23;
i = WCHNET_SocketSend(SocketId, MyBuf, &len);
printf("%d ",i);
len = 48;
i = WCHNET_SocketUdpSendTo(SocketId, MyBuf, &len, ip_addr, 2099);
printf("%d ",i);
} |