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