CH32V307 以太网socket ID对应不上

WCHNET_SocketCreat(&SockId, &TmpSocketInf)
创建Socket的时候,得到的SocketId=0


if(IntStatus & GINT_STAT_SOCKET)

{

    for(SocketNum = 0; SocketNum < WCHNET_MAX_SOCKET_NUM; SocketNum++)

   {

         SocketInt = WCHNET_GetSocketInt(SocketNum);

    }

}.....

读取Socket的中断标志时,读到的是SocketNum=1 发生中断并且读取到接收的数据。如果是创建的时候创建2个,同样也是读创建的时候为1 读到数据的socke为2.

理论上我创建的时候是Socket 0那么我就只要检查Socket 0的状态,而官网例子里面是检查所有Socket状态 那个有变化就处理哪个,如果是2个Socket 这种做法是不行的。是不是库初始化的时候Socket从0开始而获取中断的socket是从1开始的。。。。。


没有搞明白为啥创建的TCP Server Id是0 ,接收到的数据却在1里面
image.png


只有TCP Server 是这种情况


您好,TCP Server Listening会占用一个socket,该值为0;当有TCP Client连接进来之后协议栈会重新分配一个socket保存该连接的信息,值为1,类似的,多连接分配的socket值会依次递增。


好的 已经弄明白了


#define RECE_BUF_LEN                  (WCHNET_TCP_MSS*2)   /* socket receive buffer size */
请问接收缓冲区给2*是啥意思?目的是为啥?以太网包最大1460的样子,这样是为了接收更大的分包发送的数据包?因为内存紧张肯定要调小,所以需要知道为啥。


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