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

(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... подробнее

Показать сообщение отдельно
Убежденный
Ушел с форума
Эксперт С++
15701 / 7211 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
20.07.2013, 00:38
Цитата Сообщение от AntiAlianKiller Посмотреть сообщение
Если я правильно понимаю, пришедший однажды пакет с данными ( recv() ) заполнит буфер единожды, и после повторной проверки ( если запихнуть этот код в цикл ( а надо? ) ) он не будет заполнять буфер последними данными что он получил ( не будет выводить последнее сообщение до бесконечности ). Верно?
Верно. Только с одним "но".

TCP - это просто поток байт, в нем нет такого понятия, как пакет или сообщение.
Если на одном конце кто-то вызвал send с "привет, колян!", то на другом конце
recv вовсе не обязана прочесть эту строку за один вызов, может получиться,
например, такая последовательность: "прив", "ет, кол", "ян!". Работать с TCP
следует исключительно как с потоком байт, разбитым на фрагменты заранее
неизвестного размера - только так и никак иначе. Конец "сообщения", если таковое
имеет какой-то смысл в приложении, определяется не количеством байт, прочитанных
за один вызов recv, а по содержимому этих байт (например, по какому-нибудь
маркеру или спец. символу).

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