Я начал делать проект с сетью.Но после настройки std :: thread, while (true) -loop не запустится.
Первое, что я сделал, это настроил std :: thread, который прослушивает новых клиентов.В функции, используемой потоком, есть while (true) -loop, который отлично работает.В главном потоке после инициализации std :: thread serverListener снова находится цикл while (true), который пытается получить данные, но этот цикл не запустится, за исключением случаев, когда я помещаю std :: cout в цикл while передцикл for, но это спамит мою консоль.
Переменные и включения:
#include <SFML/Network.hpp>
#include <iostream>
#include <list>
#include <thread>
#define PORT 1337
unsigned int clientCounter = 0;
sf::TcpSocket clients[5];
sf::Packet packet;
Функция, которую использует std :: thread:
void serverListener() {
sf::TcpListener listener;
listener.listen(PORT);
while (true) {
if (listener.accept(clients[clientCounter]) == sf::Socket::Status::Done) {
std::cout << "New client connected: "
<< clients[clientCounter].getRemoteAddress() << std::endl;
clientCounter++;
}
}
}
Основная тема:
int main()
{
std::thread serverListenerThread(&serverListener);
while(true) {
//std::cout << "Some message"; <----- when uncomment, the loop works?
for (int i = 0; i < clientCounter; i++) {
std::string message = "";
packet >> message;
if (clients[i].receive(packet) == sf::Socket::Status::Done) {
message += std::to_string(i);
std::cout << message << std::endl;
}
}
}
return 0;
}