The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Выделение отдельных пакетов в tcp потоке"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Выделение отдельных пакетов в tcp потоке" 
Сообщение от Quarc Искать по авторуВ закладки on 03-Мрт-05, 00:09  (MSK)
Сетевой демон на C. Для соединений использую протокол tcp, проблема в том что он является потоковым. Т.е. у меня нет гарантий, что один пакет посланный клиентом сервер не примет как несколько пакетов, и наоборот - несколько пакетов от клиента сервер может принять при чтении с сокета как один.
Подскажите как с этим бороться. Есть мысль использовать сигнатуры начала и конца пакетов, но уж больно накладно получается, поиск строк в пакетах. Может есть способ лучше?

PS: использовать udp не предлагать - tcp нужен для контроля состояния соединения и контроля доставки пакетов.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Выделение отдельных пакетов в tcp потоке" 
Сообщение от Dead Mustdie emailИскать по авторуВ закладки on 03-Мрт-05, 09:43  (MSK)
Организовать прикладной протокол обмена так,
чтобы границы пакетов были видны. Дабы не
искать каких-то там сигнатур, можно перед
посылкой каждого пакета отправлять его размер.
Только не забыть размерную цифирь в сетевой
byte order перевести.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Выделение отдельных пакетов в tcp потоке" 
Сообщение от MaximKuznetsov Искать по авторуВ закладки on 03-Мрт-05, 22:25  (MSK)
>Сетевой демон на C. Для соединений использую протокол tcp, проблема в том
>что он является потоковым. Т.е. у меня нет гарантий, что один
>пакет посланный клиентом сервер не примет как несколько пакетов, и наоборот
>- несколько пакетов от клиента сервер может принять при чтении с
>сокета как один.
>Подскажите как с этим бороться. Есть мысль использовать сигнатуры начала и конца
>пакетов, но уж больно накладно получается, поиск строк в пакетах. Может
>есть способ лучше?
>
>PS: использовать udp не предлагать - tcp нужен для контроля состояния соединения
>и контроля доставки пакетов.

(про то что поток можно резать уже сказали)

можно попробовать и какой-нить другой протокол..
например SCTP (http://www.sctp.org/ )
или обойтись udp, сделав свой механизм квитирования и переповторов.
Ах да - udp просили не предлагать..зря
;-)


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру