|
![]() |
Пред. тема | След. тема | ||
Форумы
![]() | |||
---|---|---|---|
Изначальное сообщение | [ Отслеживать ] |
"вопрос по сокетам" | |
Сообщение от djdxbr ![]() | |
вопрос такой,.. пишу сервер на блокирующих сокетах, для каждого соединения форкаю отдельный процесс при accept'е,.. потом читаю данные recv()... но дело в том что recv() возвращает что она прочитала только 255 байт из сокета, когда я точно знаю что послано было 765 байт... | |
Высказать мнение | Ответить | Правка | Cообщить модератору |
Оглавление |
|
Сообщения по теме | [Сортировка по времени | RSS] |
1. "вопрос по сокетам" | |
Сообщение от from_mars ![]() | |
а если как-нить так попробывать? | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
2. "вопрос по сокетам" | |
Сообщение от jd2 ![]() | |
Причина в том (и это описано в мане), что читается столько байт, сколько доступно (принято) на данный момент, вплоть до (но возможно меньше) того количества, которое запрошено. Решается использованием флага MSG_WAITALL (см. примечание к нему) и/или написанием собственной функции-обёртки, которая будет читать, пока не прочитает сколько нужно или соединение не будет разорвано. | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
![]() | |
3. "вопрос по сокетам" | |
Сообщение от djdxbr ![]() | |
спасибо! MSG_WAITALL помог... правда где-то в половине случаев соединение рвется по таймауту, но зато приходят все данные :) | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
Архив | Удалить |
Индекс форумов | Темы | Пред. тема | След. тема |
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ] |
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |