java inputStream Freezing - PullRequest
       22

java inputStream Freezing

1 голос
/ 28 августа 2010

Я пытаюсь запустить поток, который идет в сокет, захватывает входной поток и читает его.Я создаю сотни этих потоков и установил таймаут для чтения, но поток все еще остается в строке read ().

Ответы [ 2 ]

1 голос
/ 28 августа 2010

Странный код. Вы создаете буфер, читаете в нем один байт, затем анализируете этот байт, а затем повторяете весь процесс. Один байт, конечно, не занимает много разбор. Вы никогда не проверяете -1 из чтения, так что этот цикл будет бесконечно вращаться, когда узел отключается. И, наконец, Socket.isConnected () не является полезным тестом, и, в частности, он не обнаруживает отключение однорангового узла.

0 голосов
/ 28 августа 2010

Позвоните skt.available(), а затем позвоните, прочитайте это много раз, или используйте skt.read(byte[]). Другой мудрый skt.read() заблокирует. Тайм-аут по вашему усмотрению - это подключение к сокету, а не время ожидания чтения.

...