TCP клиент-сервер

Тема в разделе "WASM.BEGINNERS", создана пользователем nMaxwell, 1 окт 2011.

  1. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    Интересует ситуация:
    На клиенте за короткое время вызываются 2 send. Возможно ли, что 2 этих пакета склется в один?

    Клиент
    send (..., "hello", ...);
    send (..., "world", ...);

    Сервер
    recv(..., buf,...); // buf == "helloworld"
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    nMaxwell
    Возможно.
     
  3. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    l_inc
    а при каких условиях?
    я пытался и канал нагрузить, и передавать данные максимально быстро, без лишних операций - увы
     
  4. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    Условия бесполезно искать, для TCP как TCP/IP стек решит - так и передаст. Для TCP вообще нет никакой связи между нарезкой потока у отправителя и у получателя - это просто поток байт, никаких пакетов с точки зрения пользователя рассматриваться не должно.
    Обсуждалось уже здесь
    http://www.wasm.ru/forum/viewtopic.php?id=42270
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    nMaxwell
    Если хотите, чтобы гарантированно слилось, то при вызове recv выставьте флаг MSG_WAITALL.
     
  6. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    Dmitry_Milk
    ясно, а как дело обстоит с большими блоками? можно ли передать функции send буффер размером в 5 МБ и получить его в несколько recv или обязательно перед отправкой надо самому резать?
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    nMaxwell
    Можно.
    Не обязательно.
     
  8. nMaxwell

    nMaxwell New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    77
    l_inc
    Dmitry_Milk
    спасибо