创建网络端口服务会返回错误码11

把DHCP的例程合并入到了udpclient的例程中。


测试程序的时候发现芯片能够拿到ip,在dhcp回调函数中调用WCHNET_CreateUdpSocket失败,


WCHNET_SocketCreat返回错误码11, 是说内存超出了,


这个要怎么调呢?


u8 SocketId;

u8 SocketRecvBuf[WCHNET_MAX_SOCKET_NUM][RECE_BUF_LEN];? ? //socket receive buffer

u8 MyBuf[RECE_BUF_LEN];


void WCHNET_CreateUdpSocket(void)

{

? ? u8 i;

? ? SOCK_INF TmpSocketInf;


? ? memset((void *) &TmpSocketInf, 0, sizeof(SOCK_INF));

? ? memcpy((void *) TmpSocketInf.IPAddr, DESIP, 4);

? ? TmpSocketInf.DesPort = desport;

? ? TmpSocketInf.SourPort = srcport++;

? ? TmpSocketInf.ProtoType = PROTO_TYPE_UDP;

? ? TmpSocketInf.RecvStartPoint = (u32) SocketRecvBuf[SocketId];

? ? TmpSocketInf.RecvBufLen = RECE_BUF_LEN;

? ? i = WCHNET_SocketCreat(&SocketId, &TmpSocketInf);

? ? printf("WCHNET_SocketCreat %d srcport %d\r\n", SocketId, srcport);

? ? mStopIfError(i);

}


打印的信息是?WCHNET_SocketCreat 0?srcport? 1001

看不出有什么问题啊? 为什么会报内存的问题呢?


您好,根据你描述的报错信息,可在net_config.h文件中将WCHNET_NUM_UDP的数值改为 2 试一下,如下图,DHCP也是基于UDP的。

image.png


是正解,但是我的办法是第一次dhcp之后就直接关闭dhcp了,之后就一直用第一次申请的ip直接使用。改成2,掉线之后重新创建socket 那内存还是溢出


您好,按照您的描述,如果掉线是指拔插网线的话,那UDP是不用重新创建socket的,可以通过邮箱详细沟通一下:kx@wch.cn


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