HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><ul><li><a>Определение</a><ul><li><a>Клиенты</a></li>
1 <ul><ul><li><a>Определение</a><ul><li><a>Клиенты</a></li>
2 <li><a>Серверы</a></li>
2 <li><a>Серверы</a></li>
3 </ul></li>
3 </ul></li>
4 <li><a>О ролях клиентов и серверов</a></li>
4 <li><a>О ролях клиентов и серверов</a></li>
5 <li><a>Принцип работы</a></li>
5 <li><a>Принцип работы</a></li>
6 <li><a>Ключевые компоненты</a></li>
6 <li><a>Ключевые компоненты</a></li>
7 <li><a>Преимущества и недостатки</a><ul><li><a>Сильные стороны</a></li>
7 <li><a>Преимущества и недостатки</a><ul><li><a>Сильные стороны</a></li>
8 <li><a>Слабые стороны</a></li>
8 <li><a>Слабые стороны</a></li>
9 </ul></li>
9 </ul></li>
10 <li><a>Работа с сокетами</a><ul><li><a>Как функционирует</a></li>
10 <li><a>Работа с сокетами</a><ul><li><a>Как функционирует</a></li>
11 </ul></li>
11 </ul></li>
12 <li><a>Реализация</a><ul><li><a>Клиентская часть</a><ul><li><a>Пример</a></li>
12 <li><a>Реализация</a><ul><li><a>Клиентская часть</a><ul><li><a>Пример</a></li>
13 </ul></li>
13 </ul></li>
14 <li><a>Разработка на серверной стороне</a><ul><li><a>Пример работы на серверной стороне</a></li>
14 <li><a>Разработка на серверной стороне</a><ul><li><a>Пример работы на серверной стороне</a></li>
15 </ul></li>
15 </ul></li>
16 <li><a>Подробный разбор</a></li>
16 <li><a>Подробный разбор</a></li>
17 </ul></li>
17 </ul></li>
18 </ul><li><a>Быстрый способ изучения</a></li>
18 </ul><li><a>Быстрый способ изучения</a></li>
19 </ul><p>Java - перспективный язык программирования. Он позволяет создавать программное обеспечение разных типов и может применяться для того, чтобы писать полноценные клиент-серверные модели.</p>
19 </ul><p>Java - перспективный язык программирования. Он позволяет создавать программное обеспечение разных типов и может применяться для того, чтобы писать полноценные клиент-серверные модели.</p>
20 <p>В данной статье будет рассказано о работе с сокетами в Java, о клиентах и серверах. Предложенный материал пригодится даже тем, кто уже имел практику в разработке.</p>
20 <p>В данной статье будет рассказано о работе с сокетами в Java, о клиентах и серверах. Предложенный материал пригодится даже тем, кто уже имел практику в разработке.</p>
21 <h2>Определение</h2>
21 <h2>Определение</h2>
22 <p>Клиент-сервер - это специализированная вычислительная или сетевая структура. В ней задания или нагрузка будут распределяться между поставщиками услуг. Последние носят название серверов. Заказчики тоже фигурируют в модели. Они называются клиентами.</p>
22 <p>Клиент-сервер - это специализированная вычислительная или сетевая структура. В ней задания или нагрузка будут распределяться между поставщиками услуг. Последние носят название серверов. Заказчики тоже фигурируют в модели. Они называются клиентами.</p>
23 <p>Клиент-сервер - программное обеспечение, расположенное в пределах одной (но чаще - нескольких) машины, взаимодействующее друг другом посредством сетевых протоколов.</p>
23 <p>Клиент-сервер - программное обеспечение, расположенное в пределах одной (но чаще - нескольких) машины, взаимодействующее друг другом посредством сетевых протоколов.</p>
24 <h3>Клиенты</h3>
24 <h3>Клиенты</h3>
25 <p>Клиент - это компьютер или иное оборудование/программное обеспечение, которое будет отправлять на серверы запросы. Это необходимо для выполнения задуманных изначально задач, а также предоставления информации.</p>
25 <p>Клиент - это компьютер или иное оборудование/программное обеспечение, которое будет отправлять на серверы запросы. Это необходимо для выполнения задуманных изначально задач, а также предоставления информации.</p>
26 <h3>Серверы</h3>
26 <h3>Серверы</h3>
27 <p>Сервер - устройство, которое принимает запросы. После этого ведет обработку соответствующей команды и предоставляет клиенту ответ в установленном формате. Пример - выдача результатов поиска или раскрытие папки.</p>
27 <p>Сервер - устройство, которое принимает запросы. После этого ведет обработку соответствующей команды и предоставляет клиенту ответ в установленном формате. Пример - выдача результатов поиска или раскрытие папки.</p>
28 <p>Сервером может выступать:</p>
28 <p>Сервером может выступать:</p>
29 <ul><li>компьютер;</li>
29 <ul><li>компьютер;</li>
30 <li>ноутбук;</li>
30 <li>ноутбук;</li>
31 <li>иное оборудование или программное обеспечение.</li>
31 <li>иное оборудование или программное обеспечение.</li>
32 </ul><p>Servers обычно намного мощнее, чем clients. Связано это с повышенной нагрузкой на соответствующий девайс.</p>
32 </ul><p>Servers обычно намного мощнее, чем clients. Связано это с повышенной нагрузкой на соответствующий девайс.</p>
33 <h2>О ролях клиентов и серверов</h2>
33 <h2>О ролях клиентов и серверов</h2>
34 <p>Клиент серверное приложение немыслимо без упомянутых ранее компонентов. Софт такого характера пишется на самых разных языках, включая Java. Но перед углубленным их изучением стоит разобраться в общих принципах и понятиях. Во всех ситуациях модель функционирует одинаково. Меняется только исходный код будущего приложения.</p>
34 <p>Клиент серверное приложение немыслимо без упомянутых ранее компонентов. Софт такого характера пишется на самых разных языках, включая Java. Но перед углубленным их изучением стоит разобраться в общих принципах и понятиях. Во всех ситуациях модель функционирует одинаково. Меняется только исходный код будущего приложения.</p>
35 <p>Согласно существующей характеристике клиент-сервера, модель описывает отношения взаимодействующих друг с другом программ в приложении. Здесь рекомендуется запомнить следующее:</p>
35 <p>Согласно существующей характеристике клиент-сервера, модель описывает отношения взаимодействующих друг с другом программ в приложении. Здесь рекомендуется запомнить следующее:</p>
36 <ol><li>Серверный компонент отвечает за предоставление функций или услуг одному или нескольким клиентам.</li>
36 <ol><li>Серверный компонент отвечает за предоставление функций или услуг одному или нескольким клиентам.</li>
37 <li>Клиенты инициируют запросы на услуги/команды.</li>
37 <li>Клиенты инициируют запросы на услуги/команды.</li>
38 <li>Серверы имеют классификацию по предоставляемому обслуживанию. Пример - веб. Он отвечает за обслуживание сайтов. А server типа "файловый" занимается обслуживанием компьютерных документов.</li>
38 <li>Серверы имеют классификацию по предоставляемому обслуживанию. Пример - веб. Он отвечает за обслуживание сайтов. А server типа "файловый" занимается обслуживанием компьютерных документов.</li>
39 <li>Связь между несколькими серверами носит название межсерверной.</li>
39 <li>Связь между несколькими серверами носит название межсерверной.</li>
40 </ol><p>Одно устройство может одновременно выступать клиентом и сервером. Но для реализации подобной модели предстоит обеспечить оборудование стабильной работой и огромным количеством ресурсов.</p>
40 </ol><p>Одно устройство может одновременно выступать клиентом и сервером. Но для реализации подобной модели предстоит обеспечить оборудование стабильной работой и огромным количеством ресурсов.</p>
41 <h2>Принцип работы</h2>
41 <h2>Принцип работы</h2>
42 <p>Перед написанием программы на Джава, которая отвечает за client server, нужно четко понимать принцип ее работы. При использовании соответствующего подхода происходит следующее:</p>
42 <p>Перед написанием программы на Джава, которая отвечает за client server, нужно четко понимать принцип ее работы. При использовании соответствующего подхода происходит следующее:</p>
43 <ol><li>Клиент формирует запрос. Делается это в установленной заранее форме.</li>
43 <ol><li>Клиент формирует запрос. Делается это в установленной заранее форме.</li>
44 <li>Происходит отправка команды на сервер.</li>
44 <li>Происходит отправка команды на сервер.</li>
45 <li>Серверное оборудование или приложение принимает сигнал от client.</li>
45 <li>Серверное оборудование или приложение принимает сигнал от client.</li>
46 <li>Осуществляется обработка заданной команды.</li>
46 <li>Осуществляется обработка заданной команды.</li>
47 <li>Сервер предоставляет ответ на запрос.</li>
47 <li>Сервер предоставляет ответ на запрос.</li>
48 </ol><p>Стоит обратить внимание, что при прекращении работы сервера клиент продолжит функционировать. Он просто потеряет связь. Наглядный пример - подключение к онлайн-игре. Если на его сервере ведутся технические работы, client отключается, но существовать не прекращает. Именно поэтому для servers важна мощность и стабильность.</p>
48 </ol><p>Стоит обратить внимание, что при прекращении работы сервера клиент продолжит функционировать. Он просто потеряет связь. Наглядный пример - подключение к онлайн-игре. Если на его сервере ведутся технические работы, client отключается, но существовать не прекращает. Именно поэтому для servers важна мощность и стабильность.</p>
49 <h2>Ключевые компоненты</h2>
49 <h2>Ключевые компоненты</h2>
50 <p>Используемые приложения образовывают единую систему. Она обязательно включает в себя следующие элементы:</p>
50 <p>Используемые приложения образовывают единую систему. Она обязательно включает в себя следующие элементы:</p>
51 <ol><li>Client. Рабочая станция, входная точка конечного пользователя в заданной системе.</li>
51 <ol><li>Client. Рабочая станция, входная точка конечного пользователя в заданной системе.</li>
52 <li>Server. Устройство, которое будет взаимодействовать с clients. Необходимо для решения тех или иных задач.</li>
52 <li>Server. Устройство, которое будет взаимодействовать с clients. Необходимо для решения тех или иных задач.</li>
53 <li>Сеть. Средство передачи информации. Рабочие машины при помощи соответствующей составляющей можно объединить для получения общих ресурсов.</li>
53 <li>Сеть. Средство передачи информации. Рабочие машины при помощи соответствующей составляющей можно объединить для получения общих ресурсов.</li>
54 <li>Приложения. Они способны вести обработку данных, организовывать физическое распределение информации между клиент-серверной моделью.</li>
54 <li>Приложения. Они способны вести обработку данных, организовывать физическое распределение информации между клиент-серверной моделью.</li>
55 </ol><p>Стоит также обратить внимание на сокеты и потоки. Первое понятие в Джаве имеет широкое применение. Их можно запрограммировать особым образом, о чем зайдет речь далее. Сокет не имеет однозначного определения. Потоки - это установленные в изучаемой модели связи. Их некоторые разработчики называют Threads или "нити".</p>
55 </ol><p>Стоит также обратить внимание на сокеты и потоки. Первое понятие в Джаве имеет широкое применение. Их можно запрограммировать особым образом, о чем зайдет речь далее. Сокет не имеет однозначного определения. Потоки - это установленные в изучаемой модели связи. Их некоторые разработчики называют Threads или "нити".</p>
56 <h2>Преимущества и недостатки</h2>
56 <h2>Преимущества и недостатки</h2>
57 <p>Архитектура клиент-серверного типа обладает своими сильными и слабыми сторонами. Соответствующие нюансы необходимо знать каждому разработчику перед тем, как начинать работу с сокетами и рассматриваемым ПО.</p>
57 <p>Архитектура клиент-серверного типа обладает своими сильными и слабыми сторонами. Соответствующие нюансы необходимо знать каждому разработчику перед тем, как начинать работу с сокетами и рассматриваемым ПО.</p>
58 <h3>Сильные стороны</h3>
58 <h3>Сильные стороны</h3>
59 <p>К плюсам модели можно отнести следующие особенности:</p>
59 <p>К плюсам модели можно отнести следующие особенности:</p>
60 <ul><li>низкие требования к клиентским рабочим станциям;</li>
60 <ul><li>низкие требования к клиентским рабочим станциям;</li>
61 <li>вычислительные операции будут выполняться на серверах;</li>
61 <li>вычислительные операции будут выполняться на серверах;</li>
62 <li>гибкая система;</li>
62 <li>гибкая система;</li>
63 <li>повышенная защита локальной сети.</li>
63 <li>повышенная защита локальной сети.</li>
64 </ul><p>А еще программный код при создании разделяется на клиентскую и серверную части. Это помогает обезопасить его, а также быстро искать и исправлять ошибки/неполадки.</p>
64 </ul><p>А еще программный код при создании разделяется на клиентскую и серверную части. Это помогает обезопасить его, а также быстро искать и исправлять ошибки/неполадки.</p>
65 <h3>Слабые стороны</h3>
65 <h3>Слабые стороны</h3>
66 <p>У client-server архитектуры также есть определенные минусы. К ним обычно относят:</p>
66 <p>У client-server архитектуры также есть определенные минусы. К ним обычно относят:</p>
67 <ul><li>высокую стоимость серверов и повышенные к ним ресурсные требования;</li>
67 <ul><li>высокую стоимость серверов и повышенные к ним ресурсные требования;</li>
68 <li>обслуживание servers доверяют только специально обученным специалистам;</li>
68 <li>обслуживание servers доверяют только специально обученным специалистам;</li>
69 <li>прекращение работы client, если на серверной части "что-то пошло не так".</li>
69 <li>прекращение работы client, если на серверной части "что-то пошло не так".</li>
70 </ul><p>Но рассматриваемая архитектура является одной из самых распространенных. Она активно используется многими языками программирования. Выходит в 21 веке на передовые линии.</p>
70 </ul><p>Но рассматриваемая архитектура является одной из самых распространенных. Она активно используется многими языками программирования. Выходит в 21 веке на передовые линии.</p>
71 <h2>Работа с сокетами</h2>
71 <h2>Работа с сокетами</h2>
72 <p>Сокет - программная абстракция, которая применяется для предоставления терминалов соединения между несколькими устройствами.</p>
72 <p>Сокет - программная абстракция, которая применяется для предоставления терминалов соединения между несколькими устройствами.</p>
73 <p>Socket - программная (логическая) конечная точка, устанавливающая двунаправленную коммуникацию между сервером, а также одним или несколькими клиентами. На физическом уровне он не существует.</p>
73 <p>Socket - программная (логическая) конечная точка, устанавливающая двунаправленную коммуникацию между сервером, а также одним или несколькими клиентами. На физическом уровне он не существует.</p>
74 <p>В своей работе сокет будет использовать порты на основном устройстве для реализации программного обеспечения. Данный прием дает возможность разработчикам комфортно работать с низкоуровневыми компонентами сетевых коммуникаций. Пример - порты, маршрутизация. Все операции осуществляются непосредственно в прикладном коде.</p>
74 <p>В своей работе сокет будет использовать порты на основном устройстве для реализации программного обеспечения. Данный прием дает возможность разработчикам комфортно работать с низкоуровневыми компонентами сетевых коммуникаций. Пример - порты, маршрутизация. Все операции осуществляются непосредственно в прикладном коде.</p>
75 <p>Программирование сокетов - это своеобразный способ соединения друг с другом двух узлов в пределах одной сети. Socket представляет собой "узел". Один из них будет прослушивать установленный порт на IP-адресе. Другой - обращаться к первому для формирования надежного соединения.</p>
75 <p>Программирование сокетов - это своеобразный способ соединения друг с другом двух узлов в пределах одной сети. Socket представляет собой "узел". Один из них будет прослушивать установленный порт на IP-адресе. Другой - обращаться к первому для формирования надежного соединения.</p>
76 <p>Стоит обратить внимание на то, что server будет отвечать за формирование слушателя. В Java для программирования сокетов будут использоваться специальные классы. Они называются Socket и Server Socket.</p>
76 <p>Стоит обратить внимание на то, что server будет отвечать за формирование слушателя. В Java для программирования сокетов будут использоваться специальные классы. Они называются Socket и Server Socket.</p>
77 <h3>Как функционирует</h3>
77 <h3>Как функционирует</h3>
78 <p>Перед тем, как составлять программное обеспечение клиент-серверной модели, а также программировать сокеты, нужно понимать, как они функционируют. В случае с архитектурой разобраться достаточно легко. Но сокеты требуют отдельного внимания.</p>
78 <p>Перед тем, как составлять программное обеспечение клиент-серверной модели, а также программировать сокеты, нужно понимать, как они функционируют. В случае с архитектурой разобраться достаточно легко. Но сокеты требуют отдельного внимания.</p>
79 <p>TCP-сокет будет устанавливать связь между server и client. Это происходит в несколько шагов:</p>
79 <p>TCP-сокет будет устанавливать связь между server и client. Это происходит в несколько шагов:</p>
80 <ol><li>На серверной части создается конечная точка для соединения.</li>
80 <ol><li>На серверной части создается конечная точка для соединения.</li>
81 <li>Сокету присваивается уникальный номер. Это - его идентификатор. Для него будет резервироваться уникальная комбинация IP-адреса, а также порта.</li>
81 <li>Сокету присваивается уникальный номер. Это - его идентификатор. Для него будет резервироваться уникальная комбинация IP-адреса, а также порта.</li>
82 <li>После того, как сокет создан, server находится в режиме ожидания. Соответствующий этап осуществляется до тех пор, пока не подключится client.</li>
82 <li>После того, как сокет создан, server находится в режиме ожидания. Соответствующий этап осуществляется до тех пор, пока не подключится client.</li>
83 <li>Серверная часть получает запрос на подключение клиентского "аппарата" от соответствующего сокета.</li>
83 <li>Серверная часть получает запрос на подключение клиентского "аппарата" от соответствующего сокета.</li>
84 <li>Обе составляющие модели соединяются друг с другом.</li>
84 <li>Обе составляющие модели соединяются друг с другом.</li>
85 <li>Происходит обмен данными.</li>
85 <li>Происходит обмен данными.</li>
86 <li>Когда операции завершены, осуществляется прекращение работы системы. Оно характеризуется разрывом соединения.</li>
86 <li>Когда операции завершены, осуществляется прекращение работы системы. Оно характеризуется разрывом соединения.</li>
87 </ol><p>Выше - наглядный пример описанного алгоритма. Схема поможет быстрее разобраться в системе и научить налаживать ее функционирование.</p>
87 </ol><p>Выше - наглядный пример описанного алгоритма. Схема поможет быстрее разобраться в системе и научить налаживать ее функционирование.</p>
88 <h2>Реализация</h2>
88 <h2>Реализация</h2>
89 <p>Для программирования sockets пользователю предстоит отдельно рассматривать работу с клиентом, а также отдельно - с сервером. В противном случае добиться функционирования всей системы не получится.</p>
89 <p>Для программирования sockets пользователю предстоит отдельно рассматривать работу с клиентом, а также отдельно - с сервером. В противном случае добиться функционирования всей системы не получится.</p>
90 <p>Если происходит программирование на стороне клиента, сначала он будет ожидать запуска сервера. После - отправлять запросы и ждать обратной связи. Логика предельно простая и понятная. Инициировать подобную систему не слишком трудно в Java, если грамотно и поэтапно подойти к данному вопросу.</p>
90 <p>Если происходит программирование на стороне клиента, сначала он будет ожидать запуска сервера. После - отправлять запросы и ждать обратной связи. Логика предельно простая и понятная. Инициировать подобную систему не слишком трудно в Java, если грамотно и поэтапно подойти к данному вопросу.</p>
91 <h3>Клиентская часть</h3>
91 <h3>Клиентская часть</h3>
92 <p>Для начала стоит рассмотреть клиентский "блок". С ним работать намного проще. Существенных требований к аппаратному обеспечению здесь нет, что значительно облегчает процесс. Остается лишь разобраться с кодами в приложениях.</p>
92 <p>Для начала стоит рассмотреть клиентский "блок". С ним работать намного проще. Существенных требований к аппаратному обеспечению здесь нет, что значительно облегчает процесс. Остается лишь разобраться с кодами в приложениях.</p>
93 <p>Первый этап - установка соединения через socket. В данном случае подразумевается, что две машины обладают общими сведениями о сетевом расположении друг друга, а также TCP-порте.</p>
93 <p>Первый этап - установка соединения через socket. В данном случае подразумевается, что две машины обладают общими сведениями о сетевом расположении друг друга, а также TCP-порте.</p>
94 <p>Стоит запомнить следующую информацию:</p>
94 <p>Стоит запомнить следующую информацию:</p>
95 <ol><li>Socket можно создать при помощи специального оператора - new Socket. Он имеет такую форму записи:.</li>
95 <ol><li>Socket можно создать при помощи специального оператора - new Socket. Он имеет такую форму записи:.</li>
96 <li>Первый аргумент в операторе - это IP-адрес, который присвоен серверу.</li>
96 <li>Первый аргумент в операторе - это IP-адрес, который присвоен серверу.</li>
97 <li>Второй аргумент - TCP-порт. Число, обозначающее, какое приложение будет работать на серверной стороне.</li>
97 <li>Второй аргумент - TCP-порт. Число, обозначающее, какое приложение будет работать на серверной стороне.</li>
98 </ol><p>Для непосредственной установки больше ничего не требуется. Программист может установить связь. Через соединение сокета потоки будут применяться для ввода и вывода данных клиенту. После того, как соответствующая операция окажется позади, стоит задуматься над закрытием "связи". Данное действие явно производится после того, как пользователь отправит желаемый запрос на сервер.</p>
98 </ol><p>Для непосредственной установки больше ничего не требуется. Программист может установить связь. Через соединение сокета потоки будут применяться для ввода и вывода данных клиенту. После того, как соответствующая операция окажется позади, стоит задуматься над закрытием "связи". Данное действие явно производится после того, как пользователь отправит желаемый запрос на сервер.</p>
99 <h4><em>Пример</em></h4>
99 <h4><em>Пример</em></h4>
100 <p>А вот код, который наглядно продемонстрирует реализацию сокетного соединения на стороне имеющегося клиента:</p>
100 <p>А вот код, который наглядно продемонстрирует реализацию сокетного соединения на стороне имеющегося клиента:</p>
101 // A Java program for a ClientSide import java.net.*; import java.io.*; public class ClientProgram { // initialize socket and input output streams private Socket socket = null; private DataInputStream input = null; private DataOutputStream out = null; // constructor to put ip address and port public Client(String address, int port) { // establish a connection try { socket = new Socket(address, port); System.out.println("Connected"); // takes input from terminal input = new DataInputStream(System.in); // sends output to the socket out = new DataOutputStream(socket.getOutputStream()); } catch(UnknownHostException u) { System.out.println(u); } catch(IOException i) { System.out.println(i); }// string to read message from input String line = ""; // keep reading until "Over" is input while (!line.equals("Over")) { try { line = input.readLine(); out.writeUTF(line); } catch(IOException i) { System.out.println(i); } } // close the connection try { input.close(); out.close(); socket.close(); } catch(IOException i) { System.out.println(i); } } public static void main(String args[]) { Client client = new Client("127.0.0.1", 5000); } }<h3>Разработка на серверной стороне</h3>
101 // A Java program for a ClientSide import java.net.*; import java.io.*; public class ClientProgram { // initialize socket and input output streams private Socket socket = null; private DataInputStream input = null; private DataOutputStream out = null; // constructor to put ip address and port public Client(String address, int port) { // establish a connection try { socket = new Socket(address, port); System.out.println("Connected"); // takes input from terminal input = new DataInputStream(System.in); // sends output to the socket out = new DataOutputStream(socket.getOutputStream()); } catch(UnknownHostException u) { System.out.println(u); } catch(IOException i) { System.out.println(i); }// string to read message from input String line = ""; // keep reading until "Over" is input while (!line.equals("Over")) { try { line = input.readLine(); out.writeUTF(line); } catch(IOException i) { System.out.println(i); } } // close the connection try { input.close(); out.close(); socket.close(); } catch(IOException i) { System.out.println(i); } } public static void main(String args[]) { Client client = new Client("127.0.0.1", 5000); } }<h3>Разработка на серверной стороне</h3>
102 <p>Сервер будет создавать экземпляр своего объекта. После этого он будет ожидать запросы со стороны клиентов. Как только это произойдет, система обработает команду, а затем ответит на нее.</p>
102 <p>Сервер будет создавать экземпляр своего объекта. После этого он будет ожидать запросы со стороны клиентов. Как только это произойдет, система обработает команду, а затем ответит на нее.</p>
103 <p>Для того, чтобы закодировать серверную программу, нужно использовать несколько сокетов:</p>
103 <p>Для того, чтобы закодировать серверную программу, нужно использовать несколько сокетов:</p>
104 <ol><li>New ServerSocket. Он находится в ожидании клиентских запросов.</li>
104 <ol><li>New ServerSocket. Он находится в ожидании клиентских запросов.</li>
105 <li>Стандартный старый сокет. Потребуется, чтобы связываться с клиентами.</li>
105 <li>Стандартный старый сокет. Потребуется, чтобы связываться с клиентами.</li>
106 </ol><p>Как только сокеты будут созданы, сервер должен установить связь с клиентом с тем или иным ответом. Для вывода информации предстоит использовать обобщение. В Джаве для этого пригодится getOutputStream(). Завершающий этап - закрытие соединения. В этом случае на серверной стороне требуется прекратить работу socket, а также потоков ввода и вывода электронных материалов.</p>
106 </ol><p>Как только сокеты будут созданы, сервер должен установить связь с клиентом с тем или иным ответом. Для вывода информации предстоит использовать обобщение. В Джаве для этого пригодится getOutputStream(). Завершающий этап - закрытие соединения. В этом случае на серверной стороне требуется прекратить работу socket, а также потоков ввода и вывода электронных материалов.</p>
107 <h4><em>Пример работы на серверной стороне</em></h4>
107 <h4><em>Пример работы на серверной стороне</em></h4>
108 <p>Этот код поможет понять, как работать с sockets на стороне сервера. Можно считать его "первым приложением", реализующим рассмотренную архитектуру на Java:</p>
108 <p>Этот код поможет понять, как работать с sockets на стороне сервера. Можно считать его "первым приложением", реализующим рассмотренную архитектуру на Java:</p>
109 // A Java program for a Serverside import java.net.*; import java.io.*; public class ServerSide { //initialize socket and input stream private Socket socket = null; private ServerSocket server = null; private DataInputStream in = null; // constructor with port public Server(int port) { // starts server and waits for a connection try{ server = new ServerSocket(port); System.out.println("Server started"); System.out.println("Waiting for a client ..."); socket = server.accept(); System.out.println("Client accepted"); // takes input from the client socket in = new DataInputStream( new BufferedInputStream(socket.getInputStream())); String line = ""; // reads message from client until "Over" is sent while (!line.equals("Over")) { try { line = in.readUTF(); System.out.println(line); } catch(IOException i) { System.out.println(i); } } System.out.println("Closing connection"); // close connection socket.close(); in.close(); } catch(IOException i){ System.out.println(i); } } public static void main(String args[]){ Server server = new Server(5000); } }<h3>Подробный разбор</h3>
109 // A Java program for a Serverside import java.net.*; import java.io.*; public class ServerSide { //initialize socket and input stream private Socket socket = null; private ServerSocket server = null; private DataInputStream in = null; // constructor with port public Server(int port) { // starts server and waits for a connection try{ server = new ServerSocket(port); System.out.println("Server started"); System.out.println("Waiting for a client ..."); socket = server.accept(); System.out.println("Client accepted"); // takes input from the client socket in = new DataInputStream( new BufferedInputStream(socket.getInputStream())); String line = ""; // reads message from client until "Over" is sent while (!line.equals("Over")) { try { line = in.readUTF(); System.out.println(line); } catch(IOException i) { System.out.println(i); } } System.out.println("Closing connection"); // close connection socket.close(); in.close(); } catch(IOException i){ System.out.println(i); } } public static void main(String args[]){ Server server = new Server(5000); } }<h3>Подробный разбор</h3>
110 <p>После того, как разработчик справится с настройкой клиента, а также серверной части в модели, можно запустить используемую утилиту. Стоит начать с сервера. Далее - активировать клиент, сформировать и отправить команду-запрос. Как только это произойдет, сервер выдаст тот или иной ответ:</p>
110 <p>После того, как разработчик справится с настройкой клиента, а также серверной части в модели, можно запустить используемую утилиту. Стоит начать с сервера. Далее - активировать клиент, сформировать и отправить команду-запрос. Как только это произойдет, сервер выдаст тот или иной ответ:</p>
111 <ol><li>После запуска имеющегося сценария на стороне сервера, он будет активирован. Появится такая запись:.</li>
111 <ol><li>После запуска имеющегося сценария на стороне сервера, он будет активирован. Появится такая запись:.</li>
112 <li>Так выглядит ситуация, при которой клиент подключается и вводит запрос. Он в примере представлен строкой.</li>
112 <li>Так выглядит ситуация, при которой клиент подключается и вводит запрос. Он в примере представлен строкой.</li>
113 <li>А вот пример того, как поведет себя сервер:.</li>
113 <li>А вот пример того, как поведет себя сервер:.</li>
114 </ol><p>Предложенный алгоритм помогает выполнять программы сокетов на Джаве. Они могут быть запущены как в окне терминала, так и через командную строчку.</p>
114 </ol><p>Предложенный алгоритм помогает выполнять программы сокетов на Джаве. Они могут быть запущены как в окне терминала, так и через командную строчку.</p>
115 <h2>Быстрый способ изучения</h2>
115 <h2>Быстрый способ изучения</h2>
116 <p>Изучая серверы и клиенты, пользователи часто не знают, с чего начать. И как получить специализированное образование - тоже. Существуют различные методы, помогающие быстро освоиться в Java, его особенностях и клиент-серверных разработках:</p>
116 <p>Изучая серверы и клиенты, пользователи часто не знают, с чего начать. И как получить специализированное образование - тоже. Существуют различные методы, помогающие быстро освоиться в Java, его особенностях и клиент-серверных разработках:</p>
117 <ol><li>Поступление в техникумы и училища. Довольно интересный вариант для тех, кто хочет заниматься программированием. Возможен для реализации после 9 или 11 класса учебы в школе. Предпочтение рекомендуется отдавать направлению "Информатика". Срок обучения - 3-5 лет. В конце выдается диплом о среднем профессиональном образовании. Сети и ЯП в этом случае затрагиваются поверхностно.</li>
117 <ol><li>Поступление в техникумы и училища. Довольно интересный вариант для тех, кто хочет заниматься программированием. Возможен для реализации после 9 или 11 класса учебы в школе. Предпочтение рекомендуется отдавать направлению "Информатика". Срок обучения - 3-5 лет. В конце выдается диплом о среднем профессиональном образовании. Сети и ЯП в этом случае затрагиваются поверхностно.</li>
118 <li>Поступление в ВУЗы и университеты. Неплохой вариант для тех, кто планирует получать высшее образование. На направлениях "Информационные технологии" и "Разработка программного обеспечения" ученика научат "с нуля" разбираться в IT, а также писать коды. Обычно здесь рассматриваются самые распространенные языки программирования: PHP, HTML, Java, C, C++. Это - самый долгий путь получения образования. Отнимает 4-6 лет. В конце выдается диплом о высшем образовании. С дальнейшим трудоустройством проблем возникнуть не должно.</li>
118 <li>Поступление в ВУЗы и университеты. Неплохой вариант для тех, кто планирует получать высшее образование. На направлениях "Информационные технологии" и "Разработка программного обеспечения" ученика научат "с нуля" разбираться в IT, а также писать коды. Обычно здесь рассматриваются самые распространенные языки программирования: PHP, HTML, Java, C, C++. Это - самый долгий путь получения образования. Отнимает 4-6 лет. В конце выдается диплом о высшем образовании. С дальнейшим трудоустройством проблем возникнуть не должно.</li>
119 <li>Самообразование. Подход для особо дисциплинированных. Можно самостоятельно выбрать язык программирования, а также конкретную часть, на которой концентрироваться больше остальных. В основе заложена самодисциплина и практика. Единственная существенная проблема - это невозможность подтвердить навыки документально. Но, если участвовать в конкурсах и разнообразных проектах, у каждого будет шанс на трудоустройство в хорошую компанию по разработке контента и сетей.</li>
119 <li>Самообразование. Подход для особо дисциплинированных. Можно самостоятельно выбрать язык программирования, а также конкретную часть, на которой концентрироваться больше остальных. В основе заложена самодисциплина и практика. Единственная существенная проблема - это невозможность подтвердить навыки документально. Но, если участвовать в конкурсах и разнообразных проектах, у каждого будет шанс на трудоустройство в хорошую компанию по разработке контента и сетей.</li>
120 </ol><p>Работа с сокетами в Java не доставит существенных хлопот, если отдать предпочтение обучению на дистанционных компьютерных курсах. Это - самый быстрый и эффективный подход. Программы рассчитаны как для новичков, так и для опытных разработчиков. Учебу можно осуществлять в любое время прямо через интернет. Всем гарантирована практика и помощь в сборе первого портфолио.</p>
120 </ol><p>Работа с сокетами в Java не доставит существенных хлопот, если отдать предпочтение обучению на дистанционных компьютерных курсах. Это - самый быстрый и эффективный подход. Программы рассчитаны как для новичков, так и для опытных разработчиков. Учебу можно осуществлять в любое время прямо через интернет. Всем гарантирована практика и помощь в сборе первого портфолио.</p>
121 <p>Компьютерные курсы позволяют в срок до 12 месяцев освоить одно или несколько направлений в IT-технологиях. Уроки проводят опытные специалисты. Пользователи получают постоянную поддержку и кураторство. Можно за несколько месяцев изучить принципы работы сетей, а также научиться писать программы на Джаве с нуля. В конце каждый ученик получит электронный сертификат установленной формы.</p>
121 <p>Компьютерные курсы позволяют в срок до 12 месяцев освоить одно или несколько направлений в IT-технологиях. Уроки проводят опытные специалисты. Пользователи получают постоянную поддержку и кураторство. Можно за несколько месяцев изучить принципы работы сетей, а также научиться писать программы на Джаве с нуля. В конце каждый ученик получит электронный сертификат установленной формы.</p>
122 <a></a>
122 <a></a>