|
0 / 0 / 1
Регистрация: 18.09.2013
Сообщений: 47
|
|||||||||||
Нестандартное поведение сервера при отправке пакетов07.05.2015, 18:52. Показов 1174. Ответов 6
Метки нет (Все метки)
пишу сервер - компилирую в g++
все вроде работает, но как показала практика немного непонятно почему именно так. в коде программы есть следующие строки:
и я ожидаю что второй пакет будет содержать следующую запись... но не тут-то было следующий пакет содержит уже ВСЕ! оставшиеся записи..."\rserver version \n" + "(fork + sender) \n" + ... и т.д. это я через Wireshark вижу. но что еще более мне не понятно, так это то, что данные на клиенте в буфер попадают не полностью! а лишь частично :"\rserver version \n" + "(fork + sender) \n", остальное почему-то отбрасывается... вот код клиента (кусочек):
подскажите как решить эту проблему.
0
|
|||||||||||
| 07.05.2015, 18:52 | |
|
Ответы с готовыми решениями:
6
нестандартное поведение списков Нестандартное поведение кнопки
|
|
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
|
|
| 07.05.2015, 21:13 | |
|
Alez, на одной стороне вы используете send() а на другой recvfrom(). У вас tcp или udp?
Если послднее, то отсылать нужно используя sendto(). Лучше выложите весь исходный код.
0
|
|
|
Ушел с форума
|
||
| 07.05.2015, 21:14 | ||
Сообщение было отмечено Alez как решение
Решениетаких понятий, как "пакет". Данные, отправленные за X вызовов send, будут приняты за Y вызовов recv. За сколько именно Y - неизвестно. Данные могут прийти сильно фрагментированными (например, по 1 байту) или "склеиться" в один кусок. Или в каком-то другом виде.
0
|
||
|
0 / 0 / 1
Регистрация: 18.09.2013
Сообщений: 47
|
||
| 07.05.2015, 21:34 [ТС] | ||
но тогда возвращаясь ко второй части вопроса - почему данные были обрадотаны лишь частично? и как тогда быть с первым пакетом который прошел на прием нормально? ведь исходя из логики, что он может быть разбит или объединен с другими, я не могу точно определить когда заканчивать прием сообщений...
0
|
||
|
Ушел с форума
|
|
| 07.05.2015, 21:47 | |
Сообщение было отмечено Alez как решение
Решение
Alez, во всех протоколах, которые построены поверх TCP,
есть механизмы определения конца очередной порции данных. Где-то для этого используется специальный байт-маркер, где-то длина передается в самом начале, где-то существуют заголовки (типа Content-Length в HTTP). Вам следует сделать нечто подобное.
0
|
|
|
0 / 0 / 1
Регистрация: 18.09.2013
Сообщений: 47
|
|
| 08.05.2015, 17:08 [ТС] | |
|
может кто подскажет какие символы (специальные аля '\o') не передаются по сети?
0
|
|
|
Ушел с форума
|
|
| 08.05.2015, 17:56 | |
|
Любые передаются
![]() Но в некоторых ситуациях можно "выкрутиться". Например, если известно, что передаваться будут строго текстовые данные, то можно признаком конца сделать нулевой символ.
0
|
|
| 08.05.2015, 17:56 | |
|
Помогаю со студенческими работами здесь
7
Нестандартное поведение WDC WD10EZEX Разные ответы от сервера при отправке одного запроса Отклик сервера 550 5.1.1 при отправке письма под CDO Ошибка: Socket WouldBlock, при отправке сообщения от сервера к клиенту Нестандартное поведение Asus STRIX GTX 970 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|