Следующая часть программы выглядит как
Следующая часть программы выглядит как программа для для открытия файлов для чтения и записи за исключением того, что
InputStream и
OutputStream создаются из объекта
Socket. И объект
InputStream и объект
OutputStream конвертируются в объекты
Reader и
Writer используя классы “конвертеры”
InputStreamReader и
OutputStreamWriter, соответственно. Вы можете также использовать напрямую классы из Java 1.0
InputStream и
OutputStream, но с выводом есть явное преимущество при использовании
Writer. Это реализуется с помощью
PrintWriter, в котором перегруженный конструктор берет второй аргумент, а
boolean флаг который индицирует когда какой автоматически сбрасывает вывод в конце каждого вывода
println( ) (но не
print( )) выражения. Каждый раз, когды Вы направляете данные в
out, его буфер должен сбрасываться так информация передается о сети. Сброс важен для этого конкретного примера, т.к. клиент и сервер ждут строку данных друг от друга, перед тем, как что-то сделать. Если сброса буферов не происходит, информация не будет отправлена по сети, пока буфер полон, что вызовем много проблем в этом примере.
При написании сетевых программ Вы должны быть внимательными, прииспользовании автоматического сброса буферов. Каждый раз, когда Вы сбрасываете буфер, пакет должен создаться и отправиться. В этом случае, это именно то, что мы хотим, т.к. если пакет, содержащий строку не отослан то обмен информацией между сервером и клиентом остановится. С другой стороны, конец строки это конец сообщения. Но во многих случаях, сообщения не ограничиваются строками, так что более эффектино будет не использовать автоматический сброс, а позволить встроенной буферизации решать, когда необходимо создать и отослать пакеты. В этом случае, могут отсылаться большие пакеты и процесс пойдет быстрее.
Запомните, все потоки, которые Вы открываете, буферизованы. В конце этой главы есть упражнение, показывающее Вам, что происходит, если Вы не буферизуете потоки (все замедляется).
Бесконечный цикл
while читает строки из
BufferedReader in и записывает информацию в
System.out and to the
PrintWriter out. Запомните, что
in и
out могут быть любыми потоками, они просто соединены в сети.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий