给所有连接客户端的消息(Winsock)(c ++)

时间:2016-04-05 19:57:12

标签: 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);
    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秒发送一条消息。(所有流不同时发送)。如何同时向所有客户端发送消息?(广播)

1 个答案:

答案 0 :(得分:0)

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