Связь с сокетом Java с использованием NIO - PullRequest
0 голосов
/ 18 марта 2011

В настоящее время наше приложение использует сокеты входных и выходных потоков для связи. В конкретном примере он читает из потока ввода консоли и записывает в поток вывода сокета. Если вход сокета закрыт снаружи, но запись блокируется, выходной поток не может быть закрыт из-за зависания.

Поэтому я подумал об использовании некоторого опроса в цикле, где (консольный) входной поток опрашивается регулярно, чтобы определить, является ли он закрытым и, следовательно, закрыть выходной поток.

Согласно этой статье похоже, что мне нужно взять SocketChannel s вместо inputtream и outputtream. Разъединены ли входные потоки и выходные потоки, чтобы я мог сначала попробовать его с SocketChannel для входного потока и оставить код выходного потока как есть?

1 Ответ

0 голосов
/ 18 марта 2011

SocketChannel имеет совершенно другую модель использования вместо сокетов.Но вы, конечно, можете открыть SocketChannel и отправить данные, используя методы write (...).

SocketChannel позволяет неблокировать сетевые вызовы (поэтому он очень масштабируемый), и он дешевле в открытии соединений (меньшеЗагрузка ЦП).

...