以CH32V307为例,单片机实现单个服务器服务多个客户端实现步骤及注意事项

 

u8 IPAddr[4] = { 192, 168, 1, 10 };                     //IP address,单片机作服务器端的IP地址
u8 GWIPAddr[4] = { 192, 168, 1, 1 };                    //Gateway IP address
u8 IPMask[4] = { 255, 255, 255, 0 };                    //subnet mask
u16 srcport = 1000;                                     //source port

假设我们要使用电脑作为N个客户端,单片机作服务器端,在该函数中作修改即可:

/*********************************************************************
 * @fn      WCHNET_CreateTcpSocketListen
 *
 * @brief   Create TCP Socket for Listening
 *
 * @return  none
 */
void WCHNET_CreateTcpSocketListen(void)
{
    u8 i;
    u8 Num;
    SOCK_INF TmpSocketInf;
    memset((void *) &TmpSocketInf, 0, sizeof(SOCK_INF));
    TmpSocketInf.ProtoType = PROTO_TYPE_TCP;
    for(Num=0;Num<3;Num++)                          /* 这里给服务器开3个端口以供客户端连接 */
    {
        TmpSocketInf.SourPort = srcport++;
        i = WCHNET_SocketCreat(&SocketIdForListen, &TmpSocketInf);
        printf("SocketIdForListen %d\r\n", SocketIdForListen);
        mStopIfError(i);
        i = WCHNET_SocketListen(SocketIdForListen);                   //listen for connections
        mStopIfError(i);
    }
}

接下来我们到net_config.h库文件中修改对应参数即可

/*********************************************************************
 * socket configuration, IPRAW + UDP + TCP + TCP_LISTEN = number of sockets
 */
#define WCHNET_NUM_IPRAW              0  /* Number of IPRAW connections */

#define WCHNET_NUM_UDP                0  /* The number of UDP connections */

#define WCHNET_NUM_TCP                3  /* Number of TCP connections */

#define WCHNET_NUM_TCP_LISTEN         3  /* Number of TCP listening */

/* The number of sockets, the maximum is 31  */
#define WCHNET_MAX_SOCKET_NUM    (WCHNET_NUM_IPRAW+WCHNET_NUM_UDP+WCHNET_NUM_TCP+WCHNET_NUM_TCP_LISTEN)

#define WCHNET_TCP_MSS                1460  /* Size of TCP MSS */

此处更改WCHNET_NUM_TCP和WCHNET_NUM_TCP_LISTEN均为3后即可实现三个客户端以不同的端点号连接同一地址的TCP服务器。

如果想要开更多客户端来连接,需要将TCP的报文长度改小些,不然会报错,比如可以更改为#define    WCHNET_TCP_MSS      536,这样就可以了。

 

posted @ 2022-12-16 14:20  oTvTo  阅读(539)  评论(0编辑  收藏  举报