Объем буффера

Тема в разделе "WASM.BEGINNERS", создана пользователем Aspire, 12 июл 2007.

  1. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Хорошо, что есть такой раздел для новичков! Может, мой вопрос будет некорректным, если что поправьте, или направьте.. Есть два приложения (клиент и сервер), между которыми происходит обмен данными по сети. Соответственно, в каждом приложении данные сначала загружаются в буффер, а затем передаются на сокет. Подозреваю, что объем этого-самого буфера должен как-то оптимально рассчитываться исходя из возможностей сети и, может быть, желаемой загрузки процессора. А, может, это вообще здесь не причем ?
     
  2. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    R. Stivens
    TCPIP Illustrated, Volume 1 - The Protocols
     
  3. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    Aspire если ты работаешь с winsock и SOCK_STREAM, копируй что хочешь и сколько хочешь ос за тебя все сделает, т.е. разобъет на пакеты, доставит, уведомит, заблокирует сокет в случае чего
     
  4. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    rain Ага, понял. Это интересно, надо будет сниффером отследить как пакеты будут уходить. Прога рассчитана на соеденение SOCK_STRIM, вроде-как том должен быть сплошной поток данных, но большой объем таким макаром передать сложно, поэтому данные разбиваются на части и отсылаются по частям, после чего склеиваются. Может, я слишком усложняю ? Как указать функции socket другой протокол ? Заране сенкс.
     
  5. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    это всё делает ос за тебя _сама_, со слишком большими объемами я не сталкивался, но помнится (если только я не ошибаюсь) могут быть "баги" к примеру такие: сервер отправляет несколько пакетов (т.е. несолько вызовов send() а реальных пакетов может быть намного больше), а клиент может принят всё это одним recv'ом или наоборот на один send может получится несколько recv'ов просто учитывай эти вещи. да и то это редкие случаи
     
  6. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Распространенные грабли, на которые наступает большинство новичков. Поэтому проще рассматривать tcp соединение как поток и не заморачиваться по поводу пакетов.
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Но всё-таки вытягивать этот поток приходится по кусочкам :)