На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Winsock
    Забиваю в массив строку текста и отправляю его с помощью send. Если указываю длину меньше 25, то отправка не происходит. Т.е. функция send завершается успешно и возвращает число байт, которое я послал, но на приемном конце recv блокируется и ждет данных. Если длина 25 и больше , то все нормально работает. Какова может быть причина?
      Проверь размер буфера на принимающей стороне, или попробуй и использовать неблокирующийся режим приема
        хотелось бы увидеть исходники приема и передачи.
          Вероятно причиной явлается неявная оптимизация виндами включенная по умолчанию. Пока не наберется некоторое кол-во байтов на отсылку, винды не отправлают на удаленную сторону очередной пакет. Т.е. они буферизируют передаваемый поток.
          Проверить это можно вызвая send 25-ти байтов разков этак ндцать с интервалом в 1 секунду. На приемном конце вы увидите что принимаемые данные по 25 байт приходят стайками.
          Бороться с этим можно - нужно выключить эту оптимизацию для вашего сокета. Как это сделать не помню, поищите в MSDN. Там это точно есть.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0214 ]   [ 16 queries used ]   [ Generated: 7.05.24, 15:48 GMT ]