Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу TCP битые пакеты как можно понять, что пакет не весь и надо ждать продолжения
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Alex_sat Alex_sat вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2004
По умолчанию TCP битые пакеты как можно понять, что пакет не весь и надо ждать продолжения - 24.11.2004, 15:59

Привет, всем!
Обнаружилось вот - сервер (написан на linux-е) периодически шлет клиенту (С++ builder) по TCP массив из 2002 байт. При работе в сети все ок - TClientSocket вызывает OnRead и при чтении в буфере лежит 2002 байта. А вот при работе через модем (на низких скоростях) OnRead вызывается после получения 1360 байт после чтения которых сразу идет повторный вызов и приходят остальные 642 байта.
Вроде TCP должен сам следить за "сборкой" пакетов, тогда почему не следит и как это побороть?
Или как можно понять, что пакет не весь и надо ждать продолжения, привязываться к "известному" размеру пакета в 2002 байт не желательно, т.к. это данные с прибора, который может поменяться и размер данных будет другой.....

Заранее спасибо
Ответить с цитированием
  (#2 (permalink)) Старый
Alex_sat Alex_sat вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2004
По умолчанию TCP битые пакеты как можно понять, что пакет не весь и надо ждать продолжения - 24.11.2004, 15:59

Привет, всем!
Обнаружилось вот - сервер (написан на linux-е) периодически шлет клиенту (С++ builder) по TCP массив из 2002 байт. При работе в сети все ок - TClientSocket вызывает OnRead и при чтении в буфере лежит 2002 байта. А вот при работе через модем (на низких скоростях) OnRead вызывается после получения 1360 байт после чтения которых сразу идет повторный вызов и приходят остальные 642 байта.
Вроде TCP должен сам следить за "сборкой" пакетов, тогда почему не следит и как это побороть?
Или как можно понять, что пакет не весь и надо ждать продолжения, привязываться к "известному" размеру пакета в 2002 байт не желательно, т.к. это данные с прибора, который может поменяться и размер данных будет другой.....

Заранее спасибо
Ответить с цитированием
  (#3 (permalink)) Старый
TerAn TerAn вне форума
Member
 
Сообщений: 24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.03.2004
По умолчанию 28.11.2004, 12:51

Ну например так можно сделать - передавать сначала 2 байта - размер данных, а потом сами данные.
Ответить с цитированием
  (#4 (permalink)) Старый
TerAn TerAn вне форума
Member
 
Сообщений: 24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.03.2004
По умолчанию 28.11.2004, 12:51

Ну например так можно сделать - передавать сначала 2 байта - размер данных, а потом сами данные.
Ответить с цитированием
  (#5 (permalink)) Старый
Alex_sat Alex_sat вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2004
По умолчанию 29.11.2004, 11:28

Хм, а можно быть уверенным, что пакеты не придут в "неправильном" порядке?
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Alex_sat Alex_sat вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2004
По умолчанию 29.11.2004, 11:28

Хм, а можно быть уверенным, что пакеты не придут в "неправильном" порядке?
Ответить с цитированием
  (#7 (permalink)) Старый
TerAn TerAn вне форума
Member
 
Сообщений: 24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.03.2004
По умолчанию 29.11.2004, 14:09

Какие именно пакеты?
Ответить с цитированием
  (#8 (permalink)) Старый
TerAn TerAn вне форума
Member
 
Сообщений: 24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.03.2004
По умолчанию 29.11.2004, 14:09

Какие именно пакеты?
Ответить с цитированием
  (#9 (permalink)) Старый
Alex_sat Alex_sat вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2004
По умолчанию 29.11.2004, 14:14

"1360 байт после чтения которых сразу идет повторный вызов и приходят остальные 642 байта."

Вот эти рабитые..... я имел в виду - возможна-ли ситуация (в интернете возможно), что 642 придут раньше чем 1360?
Ответить с цитированием
  (#10 (permalink)) Старый
Alex_sat Alex_sat вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2004
По умолчанию 29.11.2004, 14:14

"1360 байт после чтения которых сразу идет повторный вызов и приходят остальные 642 байта."

Вот эти рабитые..... я имел в виду - возможна-ли ситуация (в интернете возможно), что 642 придут раньше чем 1360?
Ответить с цитированием
  (#11 (permalink)) Старый
TerAn TerAn вне форума
Member
 
Сообщений: 24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.03.2004
По умолчанию 29.11.2004, 14:50

Что говорит об этом официальная документация я не знаю, но у меня ни разу такого не бывало.
Ответить с цитированием
Ads
  (#12 (permalink)) Старый
TerAn TerAn вне форума
Member
 
Сообщений: 24
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.03.2004
По умолчанию 29.11.2004, 14:50

Что говорит об этом официальная документация я не знаю, но у меня ни разу такого не бывало.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закрыть битые сектора на HDD? Bottane4ka Накопители 13 22.01.2016 14:30
Стоит ли ждать ноутбуки с ivy bridge? Dispyre Выбор ноутбука 15 06.05.2012 18:53
Битые пиксели Dozza Любые вопросы от новичков 1 10.11.2011 18:48
Понять немогу а мне уже срочно сдавать надо TarleX Pascal 0 17.05.2011 20:26
Откуда битые сектора на HDD? san4eskv Накопители 7 05.01.2011 02:06
Битые ли пиксели и стоит ли менять монитор? home-studia Мониторы 1 25.10.2010 11:12
Битые пиксели vitatusik Ноутбуки 3 22.08.2007 20:22
можно как нить сменить пакет англ на русский в винде? DvcD Софт и программы 1 27.06.2007 10:14
Где можно достать полный пакет Visual Studio, чтобы можно было работать с базами Kelt Visual C++ 0 08.10.2004 09:22
Как можно распечатать весь отчет на листах формата А4 Алексей Самсонов C++ Builder 3 26.11.2003 15:28
Как сделать так, чтобы документ можно было просматривать во весь экран snaky Visual C++ 5 07.07.2003 20:35
Каким методом на Visual C++ можно рабочее окно программы сделать на весь экран Anonymous Visual C++ 1 19.04.2003 13:51



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов