Хорошо, что есть такой раздел для новичков! Может, мой вопрос будет некорректным, если что поправьте, или направьте.. Есть два приложения (клиент и сервер), между которыми происходит обмен данными по сети. Соответственно, в каждом приложении данные сначала загружаются в буффер, а затем передаются на сокет. Подозреваю, что объем этого-самого буфера должен как-то оптимально рассчитываться исходя из возможностей сети и, может быть, желаемой загрузки процессора. А, может, это вообще здесь не причем ?
Aspire если ты работаешь с winsock и SOCK_STREAM, копируй что хочешь и сколько хочешь ос за тебя все сделает, т.е. разобъет на пакеты, доставит, уведомит, заблокирует сокет в случае чего
rain Ага, понял. Это интересно, надо будет сниффером отследить как пакеты будут уходить. Прога рассчитана на соеденение SOCK_STRIM, вроде-как том должен быть сплошной поток данных, но большой объем таким макаром передать сложно, поэтому данные разбиваются на части и отсылаются по частям, после чего склеиваются. Может, я слишком усложняю ? Как указать функции socket другой протокол ? Заране сенкс.
это всё делает ос за тебя _сама_, со слишком большими объемами я не сталкивался, но помнится (если только я не ошибаюсь) могут быть "баги" к примеру такие: сервер отправляет несколько пакетов (т.е. несолько вызовов send() а реальных пакетов может быть намного больше), а клиент может принят всё это одним recv'ом или наоборот на один send может получится несколько recv'ов просто учитывай эти вещи. да и то это редкие случаи
Распространенные грабли, на которые наступает большинство новичков. Поэтому проще рассматривать tcp соединение как поток и не заморачиваться по поводу пакетов.