我正在尝试将一个值发送到多个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++;
}
我希望所有客户都得到相同的号码。