Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Циклы функций Recv и Send https://www.cyberforum.ru/ cpp-networks/ thread1303654.html
Здравствуйте. Подскажите по заданию: доработать программы Client и Server таким образом, чтобы программа Server принимала последовательность сообщений вида Hello from Client xxx от программы...
C++ Omnet++ https://www.cyberforum.ru/ cpp-networks/ thread1304852.html
Добрый день, Кто-нибудь сталкивался со средой моделирования Omnet++? Нужно построить беспроводную сеть с маршрутизацией на основе данных о позиции узлов. Не знаю от чего оттолкнуться - inet или...
C++ Клиент на Code::Blocks, неизвестный идентификатор getaddrinfo https://www.cyberforum.ru/ cpp-networks/ thread1303879.html
Есть Code blok, решил написать клиента для соединения с сервером, уже что только не перепробовал не компилируется.... #undef UNICODE #define WIN32_LEAN_AND_MEAN #include <iostream> #include... Все получилось спасибо.
C++ Программа, которая заходит на определённый сайт и выполняет некоторые действия https://www.cyberforum.ru/ cpp-networks/ thread1307230.html
Добрый вечер. Нужна программа, которая зхаодит на сайт и выполняет определённые действия. Такие как : переход по ссылке, печать текста. Не могли бы вы подсказать хотя бы примерно, как это... Аналогично.хотяб чтобы открывал только что появившиеся ссылки
C++ Вывод username вошедшего пользователя есть клиент-серверный чат. Сервер написан на C++, клиент-на C#. Встал вопрос. При подключении к серверу пользователя - в чате показывается Connected(как и задумывалось), но хотелось бы, чтобы и... Скорей всего ваш клиент периодически отправляет серверу запрос "присутствия", по которому сервер делает вывод, что клиент в чате. Сервер, приняв запрос, отмечает в базе данных "кто в чате", что этот... https://www.cyberforum.ru/ cpp-networks/ thread1306913.html C++ Подвисает accept Всем привет! У меня сокетный сервер написан на С++, а клиент на Java. Все прекрасно работает на Windows 8. Поставил систему на Windows 7 и уперся в проблему, не могу установить соединение с... Я так понимаю, что Socket socket = new Socket(ipAddress, 1111); - это оно и есть. Потому что дальше в Java клиенте делается следующее: DataInputStream in = new... https://www.cyberforum.ru/ cpp-networks/ thread1306263.html
C++ Отправка сообщения Graph API https://www.cyberforum.ru/ cpp-networks/ thread1303574.html
Сделал авторизацию через Graph API, получил тот самый токен и теперь вопрос - как теперь отправить пользователю сообщение в чат? Есть ID пользователя и само сообщение. Как дальше быть? Заранее... Э-э-эй)) Просто работа с Vk API и там всё просто. С Facebook у меня получилось получить сообщения пользователя, отправить пост на свою стену, но вот как отправить сообщение в чат я вообще без...
C++ Фильтрация трафика https://www.cyberforum.ru/ cpp-networks/ thread1306576.html
Мне нужно написать две программы для фильтрации трафика. Первая программа - фильтрация трафика на сетевом уровне, Вторая - фильтрация трафика на транспортном уровне. Подскажите какую литературу можно... Что есть фильтрация в данном случае ? ОС какая ?
Сворачивание сервера в трею C++
Подскажите,пожалуйста. Написал консольный сервер и хочу,чтобы при сворачивании окна,он сворачивался значком в трею,а не в простое окно. Как-то можно это через функции C++ описать? Спасибо Большое спасибо!
C++ Winsock select https://www.cyberforum.ru/ cpp-networks/ thread1303658.html
fd_set fd; FD_ZERO(&fd); FD_SET(Socket, &fd); nError = select(1, &fd, NULL, NULL, &tv); Что тут происходит? Можно поподробней неужели не хочется просто почитать про ф-цию...
C++ Сокеты. Прием данных клиентом от сервера Здравствуйте. Задача такая: Клиент отправляет серверу данные, сервер, исходя из полученных данных, обращается к БД, результат запроса нужно отправить клиенту. Обязательно ли создавать отдельный... Я бы начал с вопроса: а какой поток данных (запросов-ответов) ожидается в этом сценарии? Потому что если это будет 1 запрос в месяц, то совершенно пофигу, как это реализовать, - можно хоть посыльного... https://www.cyberforum.ru/ cpp-networks/ thread1304342.html C++ Допуск к серверу через роутер
Написал сервер чата на C++ и клиент на C#, при попытке кого-то извне подключится к серверу через клиент приводят к неудачам,но на моей машине подключение идет нормально. Как прокинуть порты и IP,... Vovka, там wi-fi,дома нету локалки
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
01.12.2014, 19:39 0

Передача больших сообщений - C++ - Ответ 6926601

01.12.2014, 19:39. Показов 2392. Ответов 28
Метки (Все метки)

Ответ

Цитата Сообщение от angoli Посмотреть сообщение
Допустим полсе первого буфера(bufer) Send заблокировался. Проходит второй буфер Send заблокирован. Приходит третий буфер. Второй буфер затирается третьим. Send освободился и начинает передавать третий буфер. Разве такое не может быть?
Теоретически, такое может возникнуть в том случае, если ты зовешь
несколько send на одном и том же сокете одновременно, не дожидаясь,
пока отработает предыдущий send. С асинхронными сокетами такое
возможно, даже можно обойтись без создания дополнительных потоков.
Но это противоречит модели работы с сокетами. Точно также можно
писать в один и тот же файл из разных потоков, а потом жаловаться,
что у него внутри белиберда.

В нормальной ситуации, когда ты пишешь в сокет строго последовательно,
сначала "А", затем "Б" и после этого "В", то принимающая сторона никогда
не увидит "Б" прежде "А" или "В" прежде "Б", и она никогда не увидит
"АВ" без "Б" или "БВ" без "А".

Цитата Сообщение от angoli Посмотреть сообщение
А вот и проект http://file.sampo.ru/7kwrwv/
Запускай файлы на разных ПК, естественно с подключением Ethernet
Разгадка нашлась довольно быстро:
C++
1
2
3
4
5
6
7
8
9
10
void MySocket::OnReceive(int nErrorCode)
{
    int nRead;
    TCHAR szError[256];
    CString sAdr, str;
    UINT nPort;
    
    nRead = Receive( m_pBuffer, BUFFERSIZE);
 
    // ...
Поставь здесь вместо BUFFERSIZE какое-нибудь небольшое число,
например 10 или 25, или даже 1. В коде клиента и в коде сервера.
И программа перестанет нормально работать.

Я уже писал (и не раз, и не только здесь, и не только я), что строить код вокруг
предположений о количестве байт, которое вернет recv, в корне неверно.
Независимо от того, сколько там другая сторона отправила за один присест send-ом,
recv может вернуть один байт, может два, может сотню или несколько килобайт.
Рассчитывать можно лишь на то, что nRead будет меньше, либо равно размеру
принимающего буфера.

Вернуться к обсуждению:
Передача больших сообщений C++
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2014, 19:39
Готовые ответы и решения:

Передача сообщений через pipe
Прошу помочь с реализацией курсового проекта. Я очень плохо шарю в c++, поэтому ничего не могу понять( Нужно через pipe реализовать...

Передача сообщений между клиентами
Всем привет! Пытаюсь написать программу для передачи сообщений между клиентами (пример взят из статьи &quot;Самоучитель игры на...

Передача больших файлов по TCP
Здравствуйте! При передаче небольших файлов вопросов не возникает. Теперь стала задача передать файл размером скажем 64 мБ если в send...

28
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2014, 19:39
Помогаю со студенческими работами здесь

Передача больших объемов информации по TCP
Надо передавать больше данных, чем может весть отдельный пакет. Когда данных мало, то всё понятно, можно отправить объект целиком и указать...

Передача координат транспорта в виде коротких сообщений
Разработать программу передачи координат транспорта г Москвы в виде коротких сообщений, обеспечивающих минимальный трафик. Для этого ввести...

Конструкторы,передача сообщений объектам и реакции объектов на сообщения в С++
Привет всем! Тему чуть-чуть понимаю,но задачу сделать не могу, вы не могли бы мне помочь с этим? вот задача:Создаваемый объект должен...

Нужна форма отправки сообщений с сайта с прикреплением больших и нескольких файлов
Есть сайт сервиса фотопечати. Нужна форма обратной связи, чтобы пользователь со страницы сайта мог отправить сообщение с прикреплением...

Передача сообщений по интернету
Я с сетью еще никогда не работал, но вот решил попытаться понять). И соответственно возник такой вопрос: как обмениваться текстовыми...

0
Новые блоги и статьи
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
Tестирование Pull Request в Kubernetes с помощью vCluster
stackOverflow 03.03.2025
При работе с микросервисной архитектурой критически важно обеспечить качественное тестирование каждого изменения перед его слиянием в основную кодовую базу. Однако тестирование Pull Request в. . .
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
WebAssembly и Go: Создание высокопроизводи­­тельных веб-приложений
bytestream 03.03.2025
WebAssembly - это технология, изменившая подход к созданию высокопроизводительных веб-приложений. До появления WebAssembly JavaScript оставался единственным языком программирования, который понимали. . .
Контексты в Go: отмена, тайм-ауты и распространение
bytestream 03.03.2025
В многопоточном программировании существует множество ситуаций, когда необходимо прерывать выполнение горутин или ограничивать время их работы. Отсутствие грамотного управления параллельными. . .
WebSocket в Go: создание масштабируемых real-time приложений
bytestream 03.03.2025
Веб-приложения все чаще требуют обработки данных в режиме реального времени. Традиционный подход с использованием HTTP-запросов имеет существенные ограничения для таких сценариев. При каждом запросе. . .
Как дебажить в Go: Руководство по отладке
bytestream 03.03.2025
Отладка в Go имеет свои особенности, связаные с строгой типизацией, моделью конкурентности и управлением памятью. Go предоставляет богатый набор встроеных средств для отладки, которые дополняются. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru