SFML и C++ Уроки \ Разработка игр › Форумы › SFML Network › Отключение клиента от сервера + разные вопросы › Ответ в теме: Отключение клиента от сервера + разные вопросы
Для начала в SFML Network уже присутствует контейнер для получаемых данных Packet. Instance of TYPE текущего масива в пакете проверяется легко
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sf::Packet packet; std::String s; socket.recieve(packet); while (!packet.endOfPacket()) if (packet >> s) { //Значит пакет является строкой } //И отправлять пакет проще std::string s = "Hello world!"; sf::Pakcet packet; packet << s; socket.send(packet); |
Ну и у тебя есть 2 выбора. Либо при дисконекте клиента отправлять на сервер кодовую строку, либо проверять state у sf::Socket
C++
1 2 3 4 5 6 7 8 9 |
//Если было socket.disconnect() if (socket.send(packet) == sf::Socket::Disconnected); if (socket.receive(packet) == sf::Socket::Disconnected); //Если подключения вовсе небыло if (socket.send(packet) == sf::Socket::NotReady); if (socket.receive(packet) == sf::Socket::NotReady); //Если при отправке/приёме данных произошла ошибка if (socket.send(packet) == sf::Socket::Error); if (socket.receive(packet) == sf::Socket::Error); |