Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перекрывающий ввод вывод  (Прочитано 15624 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
Виктор
Гость
« : 09-03-2010 17:52 » 

Доброго всем времени суток.У меня возникла следующая проблема.Я делаю сервер TCP на перекрывающей модели ввода вывода с использованием событий..Сервер вызывает 64 раза WSARecv и ждет когда все эти события выполняться.Пробелма состоит в том что пакеты иногда приходят какбы кусками(Что свойственно TCP) и  раньше это решалось банальным ожиданием того когда пакет соберется в один (т.е. функция recv тупо крутилась в цикле).Но вот с перерывающей моделью я не могу придумать какубы  провернуть такой же фокус.Думал сначала поставить флаг MSG_PEEK и смотреть чтобы все буферы были заполнены но его в этой можели использовать нельзя.МОжет быть кто то уже делал что то подобное и поможет советом? Улыбаюсь
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-03-2010 18:05 » 

Виктор, что ты имеешь в виду под пакетами?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Виктор
Гость
« Ответ #2 : 09-03-2010 18:08 » 

Тот буфер что я отправил с клиента)))
PSЯ знаю что TCP потоковый протокол просто немного неправильно выразился)))Не бейте сильно Улыбаюсь
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 09-03-2010 19:15 » 

Ну, коли понимаешь, то зачем глупость спрашиваешь?

Если задача еще не отпала, попробуй ее сформулировать иначе.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Виктор
Гость
« Ответ #4 : 10-03-2010 08:08 » 

Проблема состоит в том что с килента я посылаю  c помощью функции  WSASend 64 буфеера размером 8196 байт  а на  сервере 64 раза вызываю WSARecv и жду пока наступят эти 64 ивента.Соответственно нужно чтобы буферы после наступления этих ивентов все были заполнены.А на деле выходит что одни зщапонены другие наполовину а третьи  вообще там 1/80.Нельзя  ли сделать так чтобы при перекрытом вводе выводе  прога ждала заполнения каждого буфера под завязку.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 10-03-2010 10:11 » 

Виктор, считаю, что надо пересматривать задачу.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Виктор
Гость
« Ответ #6 : 10-03-2010 10:13 » 

А что именно менять сам метод работы с сокетами ?)) Улыбаюсь
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 10-03-2010 10:21 » new

Начни с корректной постановки задачи. Действия типа "переслать 64 буфера" - это не постановка задачи, а решение. Как видишь, практика доказывает, что кодирование - это вторичный этап программирования.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Виктор
Гость
« Ответ #8 : 11-03-2010 12:31 » 

Тему можно закрывать разобрался сам.Всем спасибо.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 11-03-2010 13:15 » 

Если нечего больше написать, то тема пойдет в мусорку - информации никакой... Жаль
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines