RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > Привет всем! Возникла необходимость написать одну сетевую программу (клиент - сервер) и в процессе написания появился вопрос: какой максимальный размер данных можно отправить функцией send()? У меня больше 24К не получается (дальше данные искажены). И может кто подскажет эффективный алгоритм отправки больших массивов данных(от 1-го до 200Мб)? > > send возвращает кол-во отправленных байт. Так что если отправлено меньше чем нужно - сдвигаешь указатель на кол-во отправленного и посылаешь дальше. > > > Так я делал в VNC: > > //////////////////////////// > #define MAXSENDSIZE 32767 > > inline int safesend(int socket, const void *buf, int len, int flags) > { > if (len > MAXSENDSIZE) len = MAXSENDSIZE; > return send(socket, buf, len, flags); > } > > VInt VSocket::Send(const char *buff, const VCard bufflen) > { > int blen = bufflen; > > while (blen > 0) > { > int n = safesend(sock, buff, blen, 0); > > if (n <= 0) return n; > > blen -= n; > buff += n; > } > > return bufflen; > } > > //////////////////////////// >
_, _, _, _, _ _ _,_
(_ | / \ |\ | | |_/
, ) | , \ / | \| | | \
~ ~~~ ~ ~ ~ ~ ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.