| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Работа с сетью > Зависание при чтении InputStream |
| Автор: DOKA 6.7.2008, 00:20 | ||||||
| Доброго дня! Требуется из входного сокета (m_inSocket) перенаправить поток на выходной сокет (m_outSocket). Но проблема в том, что на строчке
чтение в какой-то момент останавливается. Сам не понимаю почему. Обратите внимание на строку
- если её нет, то зависание происходит гораздо раньше. Данные перенаправляются целиком только в редких случаях. Помогите, пожалуйста. Вот код:
|
| Автор: AlexeyVorotnikov 7.7.2008, 09:57 |
| Операция read является блокирующей, т.е. пока не придёт очередная порция данных, программа будет стоять и ждать. |
| Автор: DOKA 8.7.2008, 12:24 | ||
Да, спасибо. Решением было использование available(). Только теперь почему-то нагрузга на процессор просто дикая. Как можно не ждать не бегая постоянно в цикле? Да и скорость передачи данных хромает :( |
| Автор: Platon 8.7.2008, 14:45 |
| Если это клиент, используй отдельный поток, в котором читаешь блок методом read(buffer), если сервер, используй NIO или какой-нибудь фреймворк, типа http://forum.vingrad.ru/faq/topic-177795/hl/mina/index.html |
| Автор: DOKA 9.7.2008, 12:55 | ||
Хм, и правда. Только что-то потоков много стало |