为什么我的TcpSocket接收完全相同的数据?

时间:2019-05-02 11:35:36

标签: c++ sfml

我正在尝试将一个值发送到多个TcpSockets,但是每个客户端都有自己的值。

我有一个名为clientCounter的变量,clientCounter具有连接的客户端数量。服务器将所有已连接的客户端数量发送给所有客户端。连接一个时,将向所有客户端发送1。

现在得到结果:例如,当连接4个客户端时,Client1收到数字1,Client2收到数字2,依此类推...

但是结果应该是:例如,当连接了四个客户端时,每个客户端都应获得数字4。

主线程:

int main(){
    Server server;

    while (true) {
        server.Send(server.GetPlayerCount());
    }

        return 0;
}

客户端数量存储在其中:

std::atomic<unsigned int> clientCounter;
int Server::GetPlayerCount()
{
    return clientCounter;
}

这显示了将数据发送到所有客户端的功能:

void Server::Send(int m)
{
    for (int i = 0; i < clientCounter; i++) {
        sf::Packet packet;
        packet << m;


        if (clients[i].send(packet) != sf::Socket::Status::Done) {
            std::cout << "Cant send Packet" << std::endl;
        }

        packet.clear();
    }
}

这是客户正在做的事情:

    sf::Packet packet;
    int count = 0;

    while (true) {
        socket.receive(packet);
        packet >> count;
        std::cout << count << std::endl;
    }

连接客户端后,clientCounter添加一个:

        if (listener.accept(clients[clientCounter]) != sf::Socket::Status::Done) {
            std::cout << "Error cant get Socket..." << std::endl;
        }
        else {
            std::cout << "New client connected: " << clients[clientCounter].getRemoteAddress() << std::endl;
            clientCounter++;
        }

我希望所有客户都得到相同的号码。

0 个答案:

没有答案