мой сервер должен переслать сообщение, которое он получил, всем подключенным клиентам, но мой код может только отправить сообщение обратно отправителю.
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
}
когда вы принимаете сокет в сокете сервера, сохраняйте его в списке массивов. Когда этот клиент исчез, удалите его из массива.
с помощью этого массива вы можете отправлять и транслировать данные своим активным клиентам.
Других решений пока нет …