> -- Илья Ермаков писал(а):
> какой размер порций (с т.з. вызова send) можно считать малым, а какой - уже нормальным?Это зависит не от отправителя (не только от него), а в значительной степени от получателя. Если получатель мерзавец и вычитывает из сокета не всё что в нём есть на данный момент, а мелкими порциями выщипывает, то и отправителю тоже придётся посылать мелкими порциями - больше в буфер получателя не влезет пока тот его не соизволит опустошить. По умолчанию размер сокетного буфера равен 128Кб. В современных виндусах размер сокетного буфера можно выставлять самостоятельно, хоть на 10Мб, в линуксах - нельзя.

Короче, правильный алгоритм работы:

1) для получателя - как можно быстрее ("со скоростью света") вычитывать из сокета все что там есть и складывать уже в свой "безразмерный" буфер для дальнейшей неспешной обработки.

2) для отправителя - засовывать в socket.Send всё что только есть, а она уже сама разберётся что к чему.

3) Если работаете под виндами (линуксы - в пролёте), то выставить размер сокетного буфера побольше (несколько мегабайтов, но это уже от задачи зависит).

Кстати, в Блэкбоксе в CommTCP используются "старые" сокеты, там размер буфера не конфигурируется, надо бы переписать на "новые"...