ВУЗ:
Составители:
Рубрика:
35
Рис.3.2. Окно клиента
Рассмотрим серверную часть приложения. Выполним импорт
необходимых java-пакетов:
import java.net.*; //классы для работы с сетью
import java.io.*; //классы для взаимодействия с файлами
Объявим класс, реализующий сервер следующим образом:
public class ServerForm extends java.awt.Frame implements Runnable
Класс сервера ServerForm является наследником от стандартного класса
Frame и реализует интерфейс Runnable. Реализация интерфейса Runnable
необходима, если мы хотим, чтобы класс обеспечивал
свою функциональность
в параллельно выполняемых подпроцессах. Объявим константу, задающую
номер порта, через который будет осуществлятся обмен данными:
public final static int PORT = 220;
Объявим следующие переменные класса ServerForm:
Socket sock = null; //Ссылка на сокетное соединение
BufferedReader in = null; //Буферизованный поток ввода
FileWriter fw = null; //Файловый поток вывода
BufferedWriter out = null;// Буферизованный поток вывода
Thread t = new Thread(this); //Новый подпроцесс выполнения
Буферизованные потоки BufferedWriter и BufferedReader будем
использовать
для обмена данными между сервером и клиентом. FileWrite для
записи полученных сообщений в файл данных. Для того чтобы отделить
процесс чтения данных из сети от основного процесса выполнения серверного
приложения, нам потребуется новый подпроцесс. Для этого мы и создали
объект t класса Thread.
Создадим метод connect(), реализующий сокетное соединение с
клиентом.
public void connect() {
В процессе установления сокетных соединений возможно появление
различных исключительных ситуаций. Поэтому защитим код от возможных
исключений, добавив оператор try и реализуя блок catch (Exception ex).
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »