|
|
|
Вопрос по записи стримов
|
|||
|---|---|---|---|
|
#18+
Читаю данные из одного сокета и пишу в другой (типа реверс-прокси) Когда оперирую буферами по 1 байту, то все нормально работает, но стоит увеличить, как клиенский софт перестает отвечать. Так понимаю если я делаю read() то он не вернет результат, пока не наполнит буфер? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Как правильно передавать данные из буфера в буфер в количестве больше чем 1 байт? Код: java 1. 2. 3. 4. 5. 6. 7. Так пробовал, но на клиенте софт который работает через этот тунель перестает работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2015, 15:14 |
|
||
|
Вопрос по записи стримов
|
|||
|---|---|---|---|
|
#18+
Второй способ работает, если размер буфера сделать 1024, почему не работает с меньшим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2015, 16:29 |
|
||
|
Вопрос по записи стримов
|
|||
|---|---|---|---|
|
#18+
Hett, а зачем тебе DataInputStream и DataOutputStream ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2015, 17:02 |
|
||
|
Вопрос по записи стримов
|
|||
|---|---|---|---|
|
#18+
Да ни зачем, скопировал откуда то пример и не поменял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2015, 17:26 |
|
||
|
Вопрос по записи стримов
|
|||
|---|---|---|---|
|
#18+
Hett, Нужно использовать InputStream.available(). Если у вас пакет меньше чем размер буфера, то read() заблокируется, так как будет ждать наполнения буфера. При этом поток блокируется и не отправляет то что уже прочитано. Соответственно и другая сторона никак не реагирует, так как ждет сообщения, а оно себе лежит в массиве и никак не используется. Но, если избавится от блокировок, то Java будет колбасить холостые циклы и жрать CPU. Нужно делать более хитрый цикл, если available() > 0, то читать в буфер, но не более чем available(). Если available() возвращает 0, то читать только 1 байт, чтобы заблокироваться до первого байта. Блин, почему я раньше так не догадался. Год назад делал похожее. В итоге переписал на NIO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39079392&tid=2124809]: |
0ms |
get settings: |
10ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 465ms |

| 0 / 0 |
