C++ 发送给所有已连接客户端(Winsock)的消息(c+;+;)

C++ 发送给所有已连接客户端(Winsock)的消息(c+;+;),c++,winsock,C++,Winsock,我有一个服务器,它为每个新客户机创建一个单独的线程 while ((client_socket = accept(server_socket, (sockaddr*)&client_info, &client_addr_size))) { nclients++; HOSTENT *hst; hst = gethostbyaddr((char*)&client_info.sin_addr.S_un.S_addr, 4, AF_INET); p

我有一个服务器,它为每个新客户机创建一个单独的线程

while ((client_socket = accept(server_socket, (sockaddr*)&client_info, &client_addr_size)))
{
    nclients++;
    HOSTENT *hst;
    hst = gethostbyaddr((char*)&client_info.sin_addr.S_un.S_addr, 4, AF_INET);
    printf("+%s [%s] new connect!\n", (hst) ? hst->h_name : "", inet_ntoa(client_info.sin_addr));
    PRINTUSERS;
    DWORD thID;
    CreateThread(NULL, NULL, SexToClient, &client_socket, NULL, &thID);
}

流函数每n秒发送一条消息。(所有流不会同时发送)。如何同时向所有客户端发送消息?(广播)

我看不到流函数。没有相应的功能,我不能给出一个完美的答案。通常,您将以for循环的形式向所有客户端发送(异步)。系统会将按摩信息一个接一个地发送给每个客户。如果您想同时向多个客户端发送消息,则需要使用多播。
(=发送一个将到达多个客户端的包。)不幸的是,使用TCP不可能做到这一点,因为TCP在一个主机和一个客户端之间建立(安全的)点对点连接。您必须使用UDP。请记住,UDP不关心包是否以正确的顺序到达、是否正确或是否完全到达。

您是否有
服务器
类中的活动用户列表?如果是这样的话,你可以反复浏览这个列表(或映射或任何最适合你需要的东西),向每个客户端发送消息。但是每个客户端都连接了一个不同的套接字,还是我错了?