Форум программистов, компьютерный форум, киберфорум
Наши страницы

(WinSock) Условие прихода пакета данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ FPS средствами C++ http://www.cyberforum.ru/cpp-beginners/thread925959.html
Здравствуйте. Подскажите, как вывести FPS поверх окна (игры), например, как это делает FRAPS. Заранее спасибо.
C++ Задача преобразования числа в предложение | обработка потока ввода Здравствуйте. Я нашел варианты решения в прикрепленной теме, но интересует вопрос следующего содержания: существуют ли метод "выхвачивания" цифр из потока cin таким образом, чтобы при вводе числа... http://www.cyberforum.ru/cpp-beginners/thread925953.html
Алгоритм хэширования MD5 C++
Мне дали задачу. Программа должна делать такое: Юзер вводит цифры или буквы Программа делает из них MD5 хэш (т.е. хэширует эти символы) :) Так вот, я в интернете нашел примерный алгоритм MD5...
C++ Решение задачи симплекс методом
Всем доброго времени суток. Помогите, пожалуйста, при компиляции выдает такую ошибку:" fatal error C1083: Не удается открыть файл включение: iostream.h: No such file or directory" Заранее спасибо....
C++ Как устроен std::string http://www.cyberforum.ru/cpp-beginners/thread925940.html
Добрый день! Недавно я задался таким вопросом - есть класс std::string, который подразумевает вставку\удаление символов и подстрок, а так же других операция. И в основе лежит какая-то структура...
C++ любителям критики AI_city.h // --------------------------------------------------------------------------- #ifndef AI_cityH #define AI_cityH #include <iostream> #include <fstream> #include <string> #include... подробнее

Показать сообщение отдельно
Убежденный
Ушел с форума
Эксперт С++
15697 / 7207 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
20.07.2013, 13:49
Цитата Сообщение от AntiAlianKiller Посмотреть сообщение
Как реализовать такой код? Я не совсем понимаю.
Прежде всего, нужна система определения границ сообщений, передающихся по TCP.
Сам TCP, как Вы уже поняли, таких границ не предоставляет. Поэтому нужен протокол
поверх TCP, в котором эти границы были бы определены. Например, можно каждое
сообщение предварять определенным количеством байт, в которых указывать его длину.
Тогда recv сначала будет вычитывать из сокета эти байты, а затем, получив длину,
вычитывать остаток сообщения, зная сколько именно байт должно прийти.

Другой распостраненный подход - определять конец сообщения по его содержимому.
Например, в HTTP большинство сообщений имеют заголовок, в котором указывается
длина, а затем тело указанной длины. Для Вашего случая подойдет какой-нибудь
специальный символ-разделитель, который не встречается в тексте - как на счет \0 ?
То есть: "Привет, Андрей !0Как дела ?0Где вчера пропадал ?0".

Итак, протокол сформирован, теперь нужен парсер протокола - компонент, которому
вы сможете "скармливать" данные, порезанные сетью на фрагменты, и который будет
"склеивать" из них целые сообщения. Например, отправляем в парсер "При", "вет, А",
"ндрей!0Как д", "ела", "?0" - он возвращает нам строку "Привет,
Андрей" (без нуля, разумеется), затем "Как дела ?" и т.д.

Ну а дальше все просто - читаете в цикле данные из recv и кидаете их в парсер.
Он возвращает готовые целые сообщения, которые можно отображать в окне чата.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru