SFML и C++ Уроки \ Разработка игр › Форумы › SFML Network › Ряд вопросов › Ответ в теме: Ряд вопросов
А ты с чем мучаешься TCP/UDP?
Я до этого не дошел, но мне кажется что пинговать сервер/клиент (чтобы знать есть клиент или нету) нужно через некий отдельный канал. то есть: клиент отправляет (в цикле естественно) конкретный пакет! А на сервере его сравнивать. допустим если клиент отправил пакет и этот пакет == нашему пакету. то не удалять из списка.
1. Если ты отправляешь данные, а клиент не принимает то программа стоит афк.
Вот этого не понял , с кодом может быть пойму. Может у тебя проблема с ожиданием
ведь если у сервера/клиента в цикле такая строка то программа замирает пока не получит пакет и строки дальше не читаются.
1 |
socket.receive(packet, sender, port); |
Но это можно легко исправить таким if`ом
1 2 3 4 |
if (socket.receive(packet, sender, port) == sf::Socket::Done) { cout << "если пакет получен, то ..."; } |
И тогда даже если пакет не пришел то выполнение кода не стоит а продолжается.
2. При передаче матрицы int больше 45×45 последние строки не передается. Сервер пишет, что отправил, а клиент ждет приема.
Опиши тут то я точно не понял. Массив[45][45]?
А передача частями?
В документации были какие-то розетки с таймером ожидания передачи, но я так и не понял как ними пользоваться, по этому оптимальным есть передавать данные тому кто просит, а не всем по списку.
Можно ссылку. по документации вообще нужно быть осторожным, я оттуда код скописатил, а там была в какойто сторке ошибка имени переменной Func — func как то так. И я 2 часа мучался, и библиотеки подключал( что я короче не делал) но нашел))) злой был пи….ц!)
А вот по поводу Розеток(socket) мне кажется это касалось TCP. Но не уверен.