Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ pre-fork сервер Если кто знает, помогите, пожалуйста. Требуется сделать префорк сокет сервер, но чтобы он обрабатывал неограниченое количество запросов. То есть, если закончились процессы, созданные для обработки... https://www.cyberforum.ru/ cpp-networks/ thread1138.html C++ Програмирование TCP/IP https://www.cyberforum.ru/ cpp-networks/ thread3047.html
Собственно меня интересует управление потоками пакетов (если так можно выразится :) ). Я нуб, с чего мне начать? Кто что порекомендует: книги, сайты, форумы. Буду благодарен. ...управление потоками пакетов... Не слышал такой формулировки. Поэтому не понял, что требуется. Если нуб, то в первую очередь изучить спецификацию TCP/IP по какой-нить книге. У меня есть,...
Организация авторизации в домене, клиент-сервер-домен-авторизация C++
Здравствуйте. Передо мной стоит следующая задача: нужно написать клиент-сервер, с возможностью авторизации клиента "tr" на сервере "tr" используя windows аутентификацию: 1) используя текущий логин и... отличное описание данных вещей в книге Рихтер Дж., Кларк Д.Д. - Программирование серверных приложений
Вопрос чайника по указателям. C++
Как по русски предельно лаконично и понятно можно истолковать выделенную часть? bind( m_socket, (SOCKADDR*) &service, sizeof(service) ) Зарание спасибо. Как по русски предельно лаконично и понятно можно истолковать выделенную часть? Так вам нужен учебник по русскому?:)) Выделенная конструкция трактуется как адрес переменной service, приведённый...
Исходники ФТП клиент-сервер с авторизацией C++
Есть ли у кого исходники системы авторизации клиент\сервер через протокол ФТП? (чем проще, тем лучше)
C++ Прога про класс процесоров Здравствуйте, уважаемые программисты. Подскажите правильно ли я думаю и исправьте если что не так в алгоритме. Создаётся класс процессоров, и выводятся данные в зависимости от выбранного проца:... Угу. Кстати, чтобы не использовать двойное условие if((a=='a')||(a=='A')) можно применить функцию приводящюю строку к нужному регистру (_strupr, к примеру). https://www.cyberforum.ru/ cpp-networks/ thread4761.html
C++ Прослушивание сокета https://www.cyberforum.ru/ cpp-networks/ thread2460.html
В общем появилась у меня необходимость в прослушивании сокета другой программы . Эту задачу можно решить с помощью сниффера но вопервых они все треубт установки специального драйвера чт оне удобно во...
C++ Написанное мною приложение управляет другим. Подскажите... Как можно и можно ли вобще?!! Хочу написать програмку на MFC чтоб она посылала сигналы (вымышленные) о нажатии различных кнопок другому приложению, так то немного шарю в программировании на MFC,... Если оба приложения пишешь ты то можешь связать их через файл, тоесть при нажатии на кнопку записывается инфа в файл а вторая прога считывает из файла данные и в зависимости от них выполняет... https://www.cyberforum.ru/ cpp-networks/ thread4093.html
магазин по продаже мебели C++
Народ помогите пожалуйста! Пишу клиент-серверное приложение "магазин по продаже мебели". Написал сервер и клиент, теперь не знаю как передать таблицу с перечнем мебели клиенту. Помогите кто может.... TransmitFile((SOCKET)hSock, hFile, 0, 0, NULL, NULL, (DWORD)0); Пересылает данные открытого файла (хэндл hFile), через подключенный hSock. Хотя можно передавать и функцией send. Только читать с...
C++ На чём компилировать? https://www.cyberforum.ru/ cpp-networks/ thread2525.html
Вот этот код, VC++ не ставится, Borland c++ Builder поставил, но там непонятно куда его вставлять... #include "pop3.h" #include "md5/md5.h" #include <algorithm> // std::copy #include... Borland C++ 4.5 unable to open include file winsock2.h unable to open include file string Borland C++ 5.02 с средой разработки unable to open include file sstream.h Borland C++ 5.5 без...
C++ Как определить установлена ли связь с сервером интернета с помощью сокетов?
Нашёл программку для сканирования портов, там был такой код: result = connect(socket1, (sockaddr *) &peer, sizeof(peer)); if (result != 0) { RichEdit1->Lines->Add("Couldn't connect to the...
C++ Помогите, пожайлуста, с курсовой Если не сложно помогите написать прогу "Сетевой обмен данными между процессами" Условие: сокет, TCP/IP а что будет взамен?и что означает помогите? https://www.cyberforum.ru/ cpp-networks/ thread2936.html
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
14.06.2008, 14:23 0

Утеря данных при передаче через TCP/IP ?! - C++ - Ответ 39045

14.06.2008, 14:23. Показов 4658. Ответов 19
Метки (Все метки)

Ответ

Ну, в общем, я примерно такого ответа и ожидал...
Вот use case, который твой сервер отработает неправильно:
Клиент 1 передает (в строках 274-282) серверу сообщения: 11111, 22222, 33333, 44444 - итого счетчик U1 честно покажет 4 сообщения. Сервер принимает (в строках 284-294) сообщения: 11111, 2222233333, 44444 - итого три "сообщения". Ах! Одно сообщение потеряно.... Вот тебе и расхождение числа переданных и принятых сообщений, описанное 12.06.2008. Хотя TCP/IP абсолютно честно передал на приемный конец все байты, которые в него запихали на передающем конце.

По-моему, ты совершаешь весьма типичную ошибку. Чтобы правильно интерпретировать, что происходит, думай о TCP/IP соединении как о "потоке" (или "ленте") байтов - ты же сам указал флаг SOCK_STREAM, не так ли? Функция WSASend() просто пишет байты в этот поток. Функция WSARecv() просто "вынимает" из потока сколько-то байтов, - а именно, столько, сколько доступно в момент ее вызова во внутреннем буфере драйвера tcpip.sys. Эти байты не обязаны вообще образовывать какое-либо сообщение, - за анализ семантики полученных байтов отвечает ПО верхнего уровня (пользователя).

Вернуться к обсуждению:
Утеря данных при передаче через TCP/IP ?! C++
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2008, 14:23
Готовые ответы и решения:

Искажение данных при передаче через TCP соединение. Winsock
Здравствуйте, у меня клиент-сервер приложение, и при передаче относительно большого числа, возникает его искажение. Хотя при передаче...

Границы сообщения при передаче через TCP
Есть клиент/сервер, общаются через TCP. Логика следующая: клиент отправляет сообщение, сервер получает и отправляет назад клиенту, клиент...

Шифрование данных при передаче на сервер
Есть задача передать данные на сервер. Получать и отправлять данные будет экзешник, а принимать и обрабатывать PHP файл на хостинге. В...

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

Передача пакета данных TCP через интернет
Доброе время суток!:) Я студент, пишу дипломную работу по передачи данных используя стек протоколов TCP/IP. У меня получилось...

Клиент-серверное сетевое приложение через среду передачи данных стека TCP/IP
Создать клиент/серверное сетевое приложение для обмена широковещательными текстовыми сообщениями через среду передачи данных стека TCP/IP. ...

Построить быстрый эхо сервер при приёме и передаче различных по объёму данных от 10 байт до 100 кбайт
Как построить быстрый эхо сервер.при приёме и передаче различных по объёму данных от 10 байт до 100 кбайт.

Утеря char* переменной при передаче объекта в дочерний поток
Здравствуйте, коротко опишу пред историю есть объект общающийся с драйвером устройства, есть форма связанная с объектом, служащая для...

Потеря данных при передаче по TCP
Система сложная, отслеживает и записывает все происходящее. В итоге получается вот что: сервер отправляет пакет (условный фрагмент из байт)...

0
Новые блоги и статьи
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
Выполнение кода в игровом цикле Unity с использованием не-MonoBehaviour классов C#
bytestream 02.03.2025
Обычный подход к разработке игр на Unity тесно связан с использованием MonoBehaviour - базового класса для скриптов, обеспечивающего доступ к игровому циклу через события Update, FixedUpdate и. . .
Управление инстанцирование­м вложенных классов в C#
bytestream 02.03.2025
Вложенные классы в C# - мощное средство для создания тесно связанных типов данных и логики. Такие классы определяются внутри других классов и обеспечивают высокий уровень инкапсуляции, позволяя. . .
Как использовать Batch Transform и Batch Gizmo Drawing API в Unity
bytestream 02.03.2025
В мире разработки игр производительность часто становится краеугольным камнем, особенно когда речь заходит о проектах с большим количеством объектов и сложной визуализацией. Unity предоставляет. . .
Эффективный реверс строк в C#
Wired 01.03.2025
Реверс строки, казалось бы простая операция, на практике может стать испытанием для производительности приложения, особенно когда речь идет о больших объемах данных или критически важных участках. . .
Перегрузка булевых операторов в C#
Wired 01.03.2025
В программировании редко встречаются задачи, требующие перегрузки булевых операторов. Обычно достаточно стандартной реализации для типа bool или использования nullable-типов. Однако существуют. . .
Способы определения момента возникновения события в коде C# Unity
Wired 01.03.2025
Отслеживание событий - важный элемент разработки игр на Unity, позволяющий создавать отзывчивые и интерактивные приложения. Однако стандартные средства Unity не всегда предоставляют оптимальные. . .
Unit-тестирование в Unity
Wired 01.03.2025
Многие разработчики игр считают, что написание тестов отнимает слишком много времени и ресурсов, особенно учитывая частые изменения геймплейной логики и механик. Однако это заблуждение приводит к. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru