"Склеивание" сообщений ТСР |
Здравствуйте, гость ( Вход | Регистрация )
"Склеивание" сообщений ТСР |
pwp2008 |
19.10.2015, 19:31
Сообщение
#1
|
Студент Группа: Участник Сообщений: 29 Регистрация: 19.12.2014 Пользователь №: 4299 Спасибо сказали: 0 раз(а) Репутация: 0 |
Подскажите пож-та, встречалось ли Вам отправленные друг за другом сообщения (клиентом) получать в сервере "склееном" виде, как если бы это было одно сообщение. В чем причина такой работы по протоколу TCP\IP ? Разрулить эту проблему удалось несколько искусственным способом, хотя здесь может подойти и передача длины сообщения и/или контрольный суммы. Видимо так склеены могут быть не 2, а даже больше последовательных сообщений.
|
|
|
ViGOur |
20.10.2015, 9:09
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Это нормально. Пакет может прийти неполный или склеенный с другим, а то и с несколькими.
Для того, чтобы нормально разбирать пакеты обычно для их отправки используют свою структуру данных, что-то вроде: По желанию можно добавить CRCTCP буфер можно расценивать как файл, в который пишутся данные одним потоком, а из другого потока ты эти данные разбираешь. |
|
|
pwp2008 |
20.10.2015, 19:09
Сообщение
#3
|
Студент Группа: Участник Сообщений: 29 Регистрация: 19.12.2014 Пользователь №: 4299 Спасибо сказали: 0 раз(а) Репутация: 0 |
Это нормально. Пакет может прийти неполный или склеенный с другим, а то и с несколькими. ............................................. TCP буфер можно расценивать как файл, в который пишутся данные одним потоком, а из другого потока ты эти данные разбираешь. Ну да, из практики вроде оно так и есть. Но ведь все таки по каким то правилам входной поток то прерывается ? Опять же, там вроде 7 или 8 уровней в протоколе ТСР и над ними опять нужно свои уровни добавлять, тем более с контрольными суммами ? Как то не ice..... По моему здесь как то завязана gui-технология обработки, пока приложение не выйдет на ожидание событий-поток в ТСР не прерывается, стоит только это организовать - сообщения перестают склеиваться. Может вообще вынести запись в сокет в отдельный thread (надо бы попробовать). |
|
|
Текстовая версия | Сейчас: 25.4.2024, 14:45 |