0 / 0 / 0
Регистрация: 26.08.2015
Сообщений: 14

TCP Socket: на сервер приходит строка меньшего размера чем исходная

26.08.2015, 12:53. Показов 2879. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация следующая: имеется 2 приложения, соединенные тцп сокетом.
Первое на delphi(tcpblocksocket из библиотеки synapse) как клиент, отправляет данные каждые 20мс, второе на c# как сервер обрабатывает их.
проблемы следующие: при относительно большой длине пакета (строка размером ~40кб) на сервер приходит строка меньшего размера чем исходная, что то в районе 20кб, такое происходит примерно в 80% передач.
И ещё, заметил, что спустя некоторое время их работы они перестают взаимодействовать вообще, в браузере не представляется открыть ни одной страницы, "страница временно недоступна или перемещена на новый веб-адрес".
В чем может быть проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2015, 12:53
Ответы с готовыми решениями:

Неблокирующий Socket (сервер, tcp)
Доброго дня. Борюсь с детектированием физического отключения сервера от ЛВС. Определение, что клиент сдох на серверной стороне...

Не приходит ответ на TCP клиент андроид с TCP сервера Qt
У меня есть TCP клиент андроид и TCP сервер Qt с клиента на сервер сообщения доходят нормально. Ну а с сервера на клиент сообщения(ответы)...

Asio deadline_timer и tcp::socket отослать асинхоронно по tcp по таймеру
Здравствуйте. Цель по tcp соединению отсылать через равные промежутки времени сообщение одно и тоже. Слушать соединение. Цель 2 (не...

24
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
27.08.2015, 16:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от w8ting Посмотреть сообщение
там метод типа RecvBytes
Ну принял он чего-то там в виде последовательности байт..

Дальше он что с принятым хозяйством делает ? Каковы дальнейшие его телодвижения в связи с принятыми, например, 20-ю килобайтами ?
0
0 / 0 / 0
Регистрация: 26.08.2015
Сообщений: 14
27.08.2015, 16:54  [ТС]
кодирует полученные байты в строку, проверяет её валидность, парсит и выводит и закрывает соединение.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
27.08.2015, 17:06
Лучший ответ Сообщение было отмечено w8ting как решение

Решение

Цитата Сообщение от w8ting Посмотреть сообщение
кодирует полученные байты в строку, проверяет её валидность
Чудесно.
Проверка на валидность только что принятых 20кб не прошла - нет среди них терминатора, поскольку он будет в следующих 20кб, а именно его наличие, с твоих слов, подтверждает успешный прием всех ожидаемых данных, отправленных клиентом

Парсить пока еще нечего .. Что в этой ситуации у тебя делает сервер ?
1
0 / 0 / 0
Регистрация: 26.08.2015
Сообщений: 14
27.08.2015, 19:27  [ТС]
намек понял, чуть позже проверю.

Добавлено через 1 час 34 минуты
действительно, это работает!
всё из за того, что я почему я был уверен, что метод сервера recieve забирает всё, что можно забрать.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
27.08.2015, 19:37
Цитата Сообщение от w8ting Посмотреть сообщение
я был уверен, что метод сервера recieve забирает всё, что можно забрать
Он и забирает все что можно забрать. А чего нельзя забрать он при всем желании не заберет, хоть и из штанов выпрыгнет)
А нельзя забрать то чего нет - те самые вторые 20кб, которые еще где-то в пути и поступят чуть позже
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2015, 19:37

Socket не могу понять в чем дело, не закрывается клиент или сервер
Где то в просторах инета (возможно даже на этом форуме) нашел пример по клиент серверу на цокетах, смастерил клиент и сервер, все хорошо...

Не приходит сообщение [TCP]
Всем привет! Скажите скажите в чём я ошибся, почему у меня на Android (TCPClient) не приходят сообщения от компьютера (TCPServer)? Уже...

boost::regex_match - исходная строка
Здравствуйте, перенес проект с Builder 6 на Builder XE4 и появилась такая проблема. Unit2.cpp(186): E2285 Could not find a match...

Регулярные выражения: исходная строка не начинается на
Всем доброго времени суток. Помогите решить проблему. 1. Есть регекс /({50})/ 2. Надо сделать так чтобы он не срабатывал в случае...

Исходная строка содержит сведения, упорядочить их
Исходная строка содержит сведения о человеке: фамилию, инициалы, год рождения, рост в см. Эти сведения расположены в произвольном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru