C ++ [UDP] Как отслеживать все подключенные (клиентские) сокетные соединения на сервере?

мой сервер должен переслать сообщение, которое он получил, всем подключенным клиентам, но мой код может только отправить сообщение обратно отправителю.

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
}

2

Решение

когда вы принимаете сокет в сокете сервера, сохраняйте его в списке массивов. Когда этот клиент исчез, удалите его из массива.

с помощью этого массива вы можете отправлять и транслировать данные своим активным клиентам.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]