C ++ [UDP]如何跟踪服务器上所有连接(客户端)的套接字连接?

时间:2016-06-23 07:15:08

标签: c++ sockets client-server sockaddr-in

我的服务器应该将收到的邮件转发给所有连接的客户端,但我的代码只能将邮件发送给发件人。

struct User
{
    char user_id[20];
    string address;
    struct sockaddr_in CONNECTED;
}U[8];

//USER LOGIN
    for(int i = 0; i < 8; i++)
    {
        //DO THIS WHEN USER MATCHED
        //user_id consists of Andrew, Lisa, David and etc
        //so that each unique name has a unique connection(CONNECTED)
        if(strcmp(user_id,U[i].user_id) == 0)
        {
            U[i].CONNECTED = cln_addr;
        }

    }

        //AFTER RECEIVING THE MESSAGE FROM CLIENT, SEND THE MESSAGE BACK TO ALL CONNECTED CLIENTS
        for(int i = 0; i < 8; i++)
    {
        sendto (*csock, BROADCASTMESSAGE, sizeof BROADCASTMESSAGE, 0, (struct sockaddr *)&U[i].CONNECTED, len_c_addr); //THIS HOWEVER ONLY FORWARD MESSAGE BACK TO THE SENDER
    }

1 个答案:

答案 0 :(得分:2)

当您接受服务器套接字中的套接字时,将其存储在数组列表中。当该客户端消失时,将其从数组中删除。

使用此阵列,您可以向活动客户端发送和广播数据。