Главная страница
Навигация по странице:

  • Индивидуальные задания

  • Контрольные вопросы

  • Рекомендуемая литература

  • Лабораторная работа 1 2 лабораторная работа 2 31 лабораторная работа 3 44 лабораторная работа 4 74


    Скачать 1.76 Mb.
    НазваниеЛабораторная работа 1 2 лабораторная работа 2 31 лабораторная работа 3 44 лабораторная работа 4 74
    Дата12.03.2021
    Размер1.76 Mb.
    Формат файлаdoc
    Имя файлаOOP_Lab_Rus.doc
    ТипЛабораторная работа
    #184105
    страница31 из 31
    1   ...   23   24   25   26   27   28   29   30   31

    ЛАБОРАТОРНАЯ РАБОТА 11.



    Тема: Классы пакета java.net. Основы модели OSI. Работа с сетью.

    Цель: Научиться работать с пакетом java.net.

    Теоретические сведения

    Классы пакета java.net.

    Рассматриваемые вопросы:

    11.1 Классы пакета Java.net

    11.1.1 InetAddress

    11.1.2 Inet4Address и Inet6Address

    11.1.3 Клиентские сокеты TCP/IP

    11.1.4 Класс URL

    11.1.5 URLConnection

    11.1.6 Класс URI

    11.2 Дейтаграммы

    11.3 Основы модели OSI
    11.1 Классы пакета java.net

    Java поддерживает семейства протоколов как ТСР , так и UDP. ТСР применяется для надежного потокового ввода-вывода по сети. UDP поддерживает более простую, а потому быструю модель передачи дейтраграмм от точки к точке. Классы, содержащиеся в пакете java.net, перечислены ниже.

    Authenticator CacheRequest

    CacheResponse ContentHandler

    CookieHandler CookieManager (добавлен в Java SE 6)

    DatagramPacket DatagramSocket

    DatagramSocketImpl HttpCookie (добавлен в java SE 6)

    HttpURLConnection IDN (добавлен в Java SE 6)

    Inet4Address Inеt6Аddrеss

    InetAddress InetSocketAddress

    InterfaceAddress JarURLConnection

    MulticastSocket NetPermission

    NetworkInterface PasswordAuthentication

    Proxy ProxySelector

    ResponseCache SecиreCacheResponse

    ServerSocket Socket

    SocketAddress Socketlmpl

    SocketPermission URI

    URL URLClassLoader URLConnection

    URLDecoder URLEncoder

    URLStreamHandler
    11.1.1 InetAddress

    Класс InetAddress используется для инкапсуляции как числовorо IP-aдpeca, так и доменного имени для этоrо адреса. Вы взаимодействуете с классом, используя имя IP-хоста, что намного удобнее и понятнее, чем IP-адрес. Класс InetAddress скрывает внутри себя число. Он может работать как с адресами IPv4, так и с IPv6.

    Класс InetAddress не имеет видимых конструкторов. Чтобы создать объект InetAddress, вы должны использовать один из доступных методов-фабрик. Методы-фабрики (factory method) - это просто соглашение, в соответствии с которым статические методы класса возвращают экземпляр этого класса. Это делается вместо перегрузки конструктора с различными списками параметров, когда наличие уникальных имен методов делает результат более ясным. Ниже приведены три часто используемых метода-фабрики InetAddress.

    static InetAddress getLocalHost( )

    throws UnknownHostException

    static InetAddress getByName(String hostName)

    throws UnknownHostException

    static InetAddress[ ] getAllByName(String hostName)

    throws UnknownHostException

    Метод getLoca1Host() просто возвращает объект InetAddress, представляющий локальный хост. Метод getByName() возвращает InetAddress хоста, чье имя ему передано. Если эти методы оказываются не в состоянии получить имя хоста, они возбуждают исключение UnknownHostException.

    Когда одно имя используется для представления нескольких машин в Internet - это обычное явление. В мире Web-серверов это единственный путь предоставления некоторой степени масштабируемости. Метод-фабрика getA11ByName() возвращает массив InetAddress, представляющий все адреса, в которые преобразуется конкретное имя. Он также возбуждает исключение UnknownHostException в случае, если не может преобразовать имя в хотя бы один адрес. InetAddress также включает фабричный метод getDyAddress(), который принимает IР-адрес и возвращает объект InetAddress. Причем могут использоваться как адреса IPv4, так и IPv6.

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

    // Демонстрация применения InetAddress.

    import java.net.*;

    class InetAddressTest

    {

    public static void main(String args[]) throws UnknownHostException

    InetAddress Address = InetAddress.getLocalHost();

    System.out.println(Address) ;

    Address = InetAddress.getByName("osborne.com");

    System.out.println(Address);

    InetAddress SW [] = InetAddress. getAllByName ("www. nba. соm") ;

    for (int i=0; i
    System.out.println(SW[i]);

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

    dеfаult/206.148.209.138

    osborne.com/198.45.24.162

    www.nba.com/64.5.96.214

    www.nba.com/64.5.96.216

    В классе InetAddress также имеется несколько других методов, которые могут быть использованы с объектами, возвращенными методами, о которых мы говорили только что. Некоторые из наиболее часто применяемых методов перечислены в табл. 11.1.

    Таблица 1. Наиболее часто применяемые методы InetAddress

    Метод

    Описание

    boolean equals(Object other)

    Возвращает true, если объект имеет тот же адрес Internet, что и other.

    byte [] getAddress ()

    Возвращает байтовый массив, представляющий IP-адрес в порядке байт сети.

    String getHostAddress()

    Возвращает строку, представляющую адрес хоста, ассоциированного с объектом InetAddress.

    String getHostName()

    Возвращает строку, представляющую имя хоста, ассоциированного с объектом InetAddress.

    Boolean isMulticastAddress()

    Возвращает true, если адрес является групповым, в противном случае возвращает false.

    String toString()

    Возвращает строку, включающую имя хоста и IP-адрес для удобства.


    11.1.2 Inet4Address и Inеt6Аddrеss

    Начиная с версии 1.4, в java включена поддержка адресов IPv6. В связи с этим были созданы два подкласса InetAddress: Inet4Address и Inеt6Аddrеss. Inet4Address представляет традиционные адреса IPv4, а Inеt6Аddrеss инкапсулируют адреса IPv6 нового стиля. Поскольку оба они являются подклассами InetAddress, ссылки InetAddress могут указывать на них. Это единственный способ, благодаря которому удалось добавить в Java функциональность IPv6, не нарушая работы существующего кода и не добавляя большого количества новых классов. В большинстве случаев вы просто можете использовать InetAddress, работая с IР-адресами, поскольку этот класс приспособлен для обоих стилей.
    11.1.3 Клиентские сокеты TCP/IP

    В java существуют два вида сокетов ТСР. Один - для серверов, другой - для клиентов. Класс ServerSocket предназначен быть "слушателем", который ожидает подключения клиентов прежде, чем что-либо делать. То есть ServerSocket предназначен для серверов. Класс Socket предназначен для клиентов. Он разработан так, чтобы соединяться с серверными сокетами и инициировать обмен по протоколу.

    В табл. 11.2 описаны два конструктора, используемые для создания клиентских сокетов.

    Таблица 11.2 Конструкторы класса Socket

    Конструктор

    Описание

    Socket (String hostNaтe, int port) throws UnknownHostException, IOException

    Создает сокет, подключенный к именованному хосту и порту.

    Socket(InetAddress ipAddress, int port)

    throws IOException

    Создает сокет, используя ранее существующий объект InetAddress и порт.


    Socket определяет несколько методов экземпляров. Например, Socket может быть просмотрен в любое время на предмет извлечения информации об адресе и порте, ассоциированной с ним. Для этого применяются методы, перечисленные в табл. 11.3.

    Метод

    Описание

    InetAddress getInetAddress ()

    Возвращает InetAddress, ассоциированный с объектом Socket. В случае если сокет не подключен, возвращает null.

    int getport ()

    Возвращает удаленный порт, к которому подключен вызывающий объект Socket. Если сокет не подключен, возвращает 0.

    int getLocalPort ()

    Возвращает локальный порт, к которому привязан вызывающий объект Socket. Если сокет не привязан, возвращает -1.


    Следующая программа представляет простой пример применения Socket. Она открывает соединение с портом whois (порт 43) на сервере InterNIC, посылает сокету аргументы командной строки, а затем печатает возвращенные данные. InterNIC пытается трактовать аргумент как зарегистрированное доменное имя Internet, а затем возвращает IP-aдpec и контактную информацию для этого сайта.

    // Демонстрация работы с сокетами.

    import java.net.*;

    import java.io.*;

    c1ass Whois {

    pиblic static void main(String args[]) throws Exception {

    int с;

    // Создает сокетное соединение с internic.net, порт 43.

    Socket s = new Socket("internic.net", 43);

    // Получает входной и выходной потоки.

    InputStream in = s.getInputStream();

    OutputStream out = s.getOutputStream();

    // Конструирует строку запроса.

    String str = (args .1ength == 0 ? "osborne. соm" args[0]) + "\n";

    // Преобразует в байты.

    byte buf[] = str.getBytes();

    // Посылает запрос.

    out.write(bиf);

    // Читает и отображает ответ.

    while ((с = in.read()) != -1)

    System.out.print((char) с);

    }

    s.close();

    Если, к примеру, вы запросите информацию об osborne.соm, то получите нечто вроде следующеrо:

    Whois Server Version 1.3

    Domain names in the .соm, .net, and .org domains саn now bе registered with mаnу different competing registrars. Go to http://www.internic.net for detailed information.

    Domain Name: OSBORNE.COM

    Registrar: NETWORK SOLUTIONS, INC.

    Whois Server: whois.networksolutions.com

    Referral URL: http://www.networksolutions.com

    Name Server: NS1.EPPG.COM

    Name Server: NS2.EPPG.COM
    11.1.4 Класс URL

    URL обеспечивает довольно четкую форму уникальной идентификации адресной информации в Web. Внутри библиотеки классов java класс URL представляет простой согласованный программный интерфейс для доступа к информации по всей сети Internet посредством использования URL.

    Jаvа-класс URL имеет несколько конструкторов; каждый из них может возбуждать исключение Ma1formedURLException. Одна из часто используемых форм специфицирует URL в виде строки, идентичной тому, что вы видите в браузере:

    URL(String urlSpecifier) throws MalformedURLException

    Следующие две формы конструктора позволяют вам разбить URL на части компоненты:

    URL(String protocolName, String hostName, int port, String path)

    throws MalformedURLException

    URL(String protocolName, String hostName, String path)

    throws MalformedURLException

    Другой часто используемый конструктор позволяет указывать существующий URL в качестве ссылочного контекста, и затем создать из этого контекста новый URL. Хотя это звучит несколько запутано, на самом деле это очень просто и удобно.

    URL(URL urlObj, String urlSpecifier) throws MalformedURLException

    Следующий пример создает URL страницы загрузки Osborne, а затем просматривает его свойства:

    // Демонстрация применения URL.

    import java.net.*;

    class URLDemo {

    public static void main(String args[]) throws MalformedURLException

    URL hp = new URL(''http://www.osborne.com/downloads'');

    Sуstеm.оut.рrintln("Протокол: "+ hp.getProtocol());

    System.out. println ("Порт: " + hp. getport () ) ;

    System.out.println("Xocт: " + hp.getHost());

    System.out.println ("Файл: " + hp.getFile ());

    System. out .println ("Целиком: " + hp. toExternalForm () ) ;

    }

    }

    Запустив это, вы получите:

    Протокол: http

    Порт: -l

    Хост: www.osborne

    Файл: /downloads

    Целиком: http://www.osborne/downloads

    Обратите внимание на порт -1; это означает, что порт явно не установлен. Передав объект URL, вы можете извлечь данные, ассоциированные с ним. Чтобы получить доступ к действительным битам или информации по URL, создайте из него объект URLConnection, используя его метод openConnection() , как показано ниже:

    urlc = url.openConnection()

    openaConnection () имеет следующую общую форму:

    URLConnection openConnection() throws IOException

    Он возвращает объект URLConnection, ассоциированный с вызывающим объектом URL. Обратите внимание, что он может возбуждать исключение IOException.
    11.1.5 URLConnection

    URLConnection - это класс общего назначения, предназначенный для доступа к атрибутам удаленного ресурса. Однажды установив соединение с удаленным сервером, вы можете использовать URLConnection для просмотра свойств удаленного объекта, прежде чем транспортировать его локально. Эти атрибуты представлены в спецификации протокола http и, как таковые, имеют смысл только для объектов URL, использующих протокол http.

    URLConnection определяет несколько методов. Некоторые из них перечислены в табл.11.5.

    Таблица 11.5 Некоторые методы класса URLConnection

    Метод

    Описание

    Int getContentLength()

    Возвращает размер содержимого, ассоциированого с ресурсом. Если длина недоступна, возвращается -1.

    String getContentType()

    Возвращает тип содержимого, найденного в ресурсе. Это значение поля заголовка content-type. Возвращает null, если тип содержимого недоступен.

    long getDate ()

    Возвращает время и дату ответа, представленное в миллисекундах, прошедших с 1 января 1970 r.

    long getExpiration()

    Возвращает время и дату устаревания ресурса, представленное в миллисекундах, прошедших с 1 января 1970 r. Если дата устаревания недоступна, возвращается ноль.

    String getHeaderField (int idx)

    Возвращает значение заголовочного поля по индексу idx. (Индексы полей заголовка нумеруются, начиная с 0.) Возвращает null, если значение idx превышает количество полей.

    String getHeaderField(String

    fieldNaтe)

    Возвращает значение заголовочного поля, чье имя указано в fieldName. Возвращает null, если указанное поле не найдено.

    String getHeaderFieldKey (int idx)

    Возвращает ключ заголовочного поля по индексу idx. (Индексы полей заголовка нумеруются, начиная с 0.) Возвращает null, если значение idx превышает количество полей.

    Map>

    getHeaderFields()

    Возвращает карту, содержащую все заголовочные поля вместе с их значениями.

    long getLastModified()

    Возвращает время и дату последней модификации ресурса, представленные в миллисекундах, прошедших после 1 января 1970 г. Если эта информация недоступна, возвращается ноль.

    InputStream getInputStream()

    throws IOException

    Возвращает InputStream, привязанный к ресурсу. Данный поток может использоваться для получения содержимого ресурса.


    Следующий пример создает URLConnection, используя метод openConnection() объекта URL, а затем применяет его для проверки свойств и одержимого документа:

    // Демонстрация применения URLConnection.

    import java.net.*;

    import java.io.*;

    import java.util.Date;

    class UCDemo

    {

    public static void main(String args[]) throws Exception

    int с;

    URL hp = new URL ("http://www.internic.net ") ;

    URLConnection hpCon =hp.openConnection();

    // получить дату

    long d =hpCon.getDate();

    if (d==0)

    System.out.println ("Нет информации о дате. ");

    else

    Sуstеm.оut.рrintln("Дата: " + new Date(d));

    // получить тип содержимого

    System.out.println ("Тип содержимого: " + hpCon. getContentType () ) ;

    // получить дату устаревания

    d = hpCon.getExpiration();

    if (d==0)

    System.out.println("Heт информации о сроке действия.");

    else

    System.out.println("Устареет: "+ new Date(d));

    // получить дату последней модификации

    d = hpCon.getLastModified();

    if (d==0)

    System.out.println ("Нет информации о дате последней модификации.") ;

    e1se

    Sуstеm.оut.рrintln("Дата последней модификации: " + new Date(d));

    // получить длину содержимого

    int len = hpCon.getContentLength();

    if (len == -1)

    Sуstеm.оut.рrintln("Длина содержимого недоступна.");

    else

    Sуstеm.оut.рriпtlп("Длина содержимого: " + len);

    if (len != 0) {

    System.out.println("=== Содержимое ===");

    InputStream input = hpCon.getInputStream();

    int i = len;

    while (( (с = input.read()) ! = -1)) { // && (--i > 0)) {

    System.out.print((char) с);

    }

    input.close();

    } else {

    Sуstеm.оut.рrintln("Содержимое недоступно.");

    }

    }

    }

    Эта программа устанавливает НТТР-соединение с www.internic.net через порт 80. Затем она отображает несколько заголовочных значений и извлекает содержимое. Приведем первые строки вывода (точное их содержание будет меняться со временем):

    Дата: Thu Jun 08 14:41:35 CDT 2006

    Тип содержимого: text/html

    Нет информации о сроке действия.

    Дата последней модификации: Wed Oct 05 19:49:29 CDT 2005

    Длина содержимого: 4917

    === Содержимое ===




    11.1.6 Класс URI

    Относительно недавним дополнением к java стал класс URI, инкапсулирующий универсальный идентификатор ресурса (Uniform Resource Identifier - URI). URI очень похож на URL. На самом деле URL представляет собой подмножество URI. URI предоставляет стандартный способ идентификации ресурсов. URL также описывает доступ к ресурсу.
    11.1.7 Серверные сокеты TCP/IP

    Класс ServerSocket используется для создания серверов, которые прослушивают обращения как локальных, так и удаленных клиентских программ, желающих установить соединения с ними через открытые порты. ServerSocket довольно-таки сильно отличается от обычных Socket. Когда вы создаете ServerSocket, он регистрирует себя в системе в качестве заинтересованного в клиентских соединениях. Конструкторы ServerSocket отражают номер порта, через который вы хотите принимать соединения, а также - обязательно - длину очереди для данного порта. Длина очереди сообщает системе о том, сколько клиентских соединений можно удерживать, прежде чем начать просто отклонять попытки подключения. По умолчанию установлено 50. При определенных условиях конструкторы могут возбуждать исключение IOException. Конструкторы этого класса описаны в табл. 11.6.
    Таблица 11.6 Конструкторы класса ServerSocket

    Конструктор

    Описание

    ServerSocket (int port) throws IOException

    Создает серверный сокет на указанном порте с длиной очереди 50.

    ServerSocket (int port, int тaxQueue) throws IOException

    Создает серверный сокет на указанном порте с максимальной длиной очереди в maxQueue.

    ServerSocket(int port, int тaxQueue, InetAddress localAddress) throws IOException

    Создает серверный сокет на указанном порте с максимальной длиной очереди в maxQueue. На групповом хосте localAddress указывает IP-адрес, к которому привязан сокет.



    11.2 Дейтаграммы

    Сетевое взаимодействие в стиле ТСР/IP подходит для большинства сетевых нужд. Оно обеспечивает сериализуемые, предсказуемые и надежные потоки пакетов данных. Тем не менее, это обходится далеко не даром. ТСР включает множество сложных алгоритмов управления потоками в нагруженных сетях, а также самые пессимистические предположения относительно утери пакетов. Это порождает в некоторой степени неэффективный способ транспортировки данных. В качестве альтернативы можно использовать дейтаграммы.

    Дейтаграммы (datagramms) - это порции информации, передаваемые между машинами. Как только дейтаграмма запущена в сторону нужной цели, нет никаких гарантий, что она достигнет цели, или кто-нибудь окажется на месте, чтобы ее подхватить. Точно так же, когда дейтаграмма принимается, нет никакой гарантии, что она не была повреждена в пути, или что ее отправитель все еще ожидает ответа.

    Java реализует дейтаграммы поверх протокола UDP, используя для этого два класса: DatagramPacket - контейнер данных, и DatagramSocket - механизм, используемый для обслуживания DatagramPacket.
    11.3 Основы модели OSI

    В течение последних нескольких десятилетий размеры и количество сетей значительно выросли. В 80-х годах существовало множество типов сетей. И практически каждая из них была построена на своем типе оборудования и программного обеспечения, зачастую не совместимых между собой. Это приводило к значительным трудностям при попытке соединить несколько сетей (например, различный тип адресации делал эти попытки практически безнадежными).

    Эта проблема была рассмотрена Всемирной организацией по стандартизации (International Organization for Standardization, ISO) и было принято решение разработать модель сети, которая могла бы помочь разработчикам и производителям сетевого оборудования и программного обеспечения действовать сообща. В результате в 1984 г. была создана модель OSI – модель взаимодействия открытых систем (Open Systems Interconnected). Она состоит из семи уровней, на которые разделяется задача организации сетевого взаимодействия. Схематично они представлены в таблице 11.7.

    Таблица 11.7. Уровни модели OSI.

    Номер уровня

    Название уровня

    Единица информации

    Layer 7

    Уровень приложений

    Данные (data)

    Layer 6

    Представительский уровень

    Данные (data)

    Layer 5

    Сессионный уровень

    Данные (data)

    Layer 4

    Транспортный уровень

    Сегмент (segment)

    Layer 3

    Сетевой уровень

    Пакет (packet)

    Layer 2

    Уровень передачи данных

    Фрейм (frame)

    Layer 1

    Физический уровень

    Бит (bit)


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

    Рассмотрим процесс передачи информации между двумя компьютерами. Программное обеспечение формирует сообщение на уровне 7 (приложений), состоящее из заголовка и полезных данных. В заголовке содержится служебная информация, которая необходима уровню приложений адресата для обработки пересылаемой информации (например, это может быть информация о файле, который необходимо передать, или операции, которую нужно выполнить). После того, как сообщение было сформировано, уровень приложений направляет его "вниз" на представительский уровень (layer 6). Полученное сообщение, состоящее из служебной информации уровня 7 и полезных данных, для уровня 6 представляется как одно целое (хотя уровень 6 может считывать служебную информацию уровня 7). Протокол представительского уровня выполняет необходимые действия на основании данных, полученных из заголовка уровня приложений, и добавляет заголовок своего уровня, в котором содержится информация для соответствующего (6-го) уровня адресата. Полученное в результате сообщение передается далее "вниз" сеансовому уровню, где также добавляется служебная информация. Дополненное сообщение передается на следующий транспортный уровень и т.д. на каждом последующем уровне. При этом служебная информация может добавляться не только в начало сообщения, но и в конец (например, на 3-м уровне) В итоге получается сообщение, содержащее служебную информацию всех семи уровней.

    Процесс "обертывания" передаваемых данных служебной информацией называется инкапсуляцией (encapsulation).

    Далее это сообщение передается через сеть в виде битов. Бит – это минимальная порция информации, которая может принимать значение 0 или 1. Таким образом, все сообщение кодируется в виде набора нулей и единиц, например, 010110101. В простейшем случае на физическом уровне для передачи формируется электрический сигнал, состоящий из серии электрических импульсов (0 - нет сигнала, 1 - есть сигнал). Именно эта единица принята для измерения скорости передачи информации. Современные сети обычно предоставляют каналы с производительностью в десятки и сотни Кбит/с и Мбит/с.

    Получатель на физическом уровне получает сообщение в виде электрического сигнала. Далее происходит процесс, обратный инкапсуляции,– декапсуляция (decapsulation). На каждом уровне происходит разбор служебной информации. После декапсуляции сообщения на первом уровне (считывания и обработки служебной информации 1-го уровня) это сообщение, содержащее служебную информацию второго уровня и данные в виде полезных данных и служебной информации вышестоящих уровней, передается на следующий уровень. На канальном (2-м) уровне снова происходит анализ системной информации и сообщение передается на следующий уровень. И так до тех пор, пока сообщение не дойдет до уровня приложений, где в виде конечных данных передается принимающему приложению.

    Так как каждый уровень модели OSI стандартизирован, потребители могут использовать совместно оборудование и программное обеспечение различных производителей. В результате web-сервер под управлением операционной системы Sun Solaris может передать HTML-страницу пользователю MS Windows.
    Индивидуальные задания

    1. Реализовать приложение эхо-клиент и приложение эхо-сервер на основе протокола TCP/IP.

    2. Реализовать приложение эхо-клиент и приложение эхо-сервер на основе протокола TCP/IP. Дополнить возвратом приложением сервером справочной информации о подключившемся клиенте.

    3. Реализовать приложение эхо-клиент и приложение эхо-сервер на основе протокола TCP/IP. Дополнить возвратом справочной информации о текущих подключенных клиентах.

    4. Реализовать многопоточный вариант приложения эхо-клиент и приложения эхо-сервер.

    5. Реализовать приложение на основе протокола TCP/IP для организации обмена сообщениями между клиентами, подключенными к серверу.

    6. Реализовать приложение на основе протокола TCP/IP для организации обмена сообщениями между клиентами, подключенными к серверу. Реализовать функции передачи содержимого файлов (без использования протокола FTP) между подключенными клиентами.

    7. Реализовать многопользовательское клиент-серверное приложение эмулирующее работу билинговой системы и обладающее следующими функциональными возможностями:

    - открытие счета;

    - внесение средств на счет;

    - снятие средств со счета;

    - контроль баланса счета.

    8. Реализовать приложение эхо-клиент и приложение эхо-сервер на основе протокола UDP/IP.

    9. Реализовать приложение эхо-клиент и приложение эхо-сервер на основе протокола UDP/IP. Дополнить приложение возвратом приложением сервером справочной информации о подключившемся клиенте.

    10. Реализовать приложение эхо-клиент и приложение эхо-сервер на основе протокола UDP/IP. Дополнить возвратом справочной информации о текущих подключенных клиентах.

    11. Реализовать приложение на основе протокола UDP/IP для организации обмена сообщениями между клиентами, подключенными к серверу.

    12. Реализовать приложение на основе протокола UDP/IP для организации обмена сообщениями между клиентами, подключенными к серверу. Реализовать функции передачи содержимого файлов (без использования протокола FTP) между подключенными клиентами.

    13. Реализовать многопользовательское клиент-серверное приложение, эмулирующее работу новостной системы. Приложение-клиент может вносить новость и отвечать на сообщения, опубликованные другими пользователями. Сообщения доступны для просмотра всеми пользователями и образуют древовидную структуру.

    14. Реализовать распределенное клиент-серверное приложение на основе протокола TCP/IP, обладающее следующими функциональными возможностями:

    - приложение устанавливает соединение с сервером и начинает вносить в поток передачи данных последовательность случайных целочисленных значений.

    15. Реализовать распределенное клиент-серверное приложение на основе протокола TCP/IP, обладающее следующими функциональными возможностями:

    - сервер считывает данные из входного потока и заносит их в некоторый буфер, проверяя на наличие вновь вносимых значений в буфер, если происходит попытка дублирования, значения отбрасываются. При достижении некоторого порогового объема буфера, данные из него дозаписываются в файл, а содержимое буфера копируется в некоторый другой буфер, а вновь принимаемые значения отыскиваются и в этом буфере.
    Контрольные вопросы

    1. Для чего предназначен пакет java.net?

    2. Какие существуют классы пакета java.net?

    3. Для чего используется класс InetAddress?

    4. Перечислите наиболее часто применяемые методы класса InetAddress.

    5. В связи с чем были созданы два подкласса InetAddress: Inet4Address и Inet6Address?

    6. Какие виды сокетов TCP существуют в Java?

    7. Что представляет собой класс URL?

    8. Что представляет собой класс URI?

    9. Что такое дейтаграммы?

    10. Перечислите уровни модели OSI?


    Рекомендуемая литература

    1. Г. Шилдт Полный справочник по Java. – М., Киев: «Вильямс», 2007

    2. Б. Эккель Философия Java. – М., Киев: «Питер», 2009

    3. К. С. Хорстманн Основы Java. – М.: «Вильямс», 2003

    4. А. А. Кубенский Создание и обработка структур данных в примерах на Java. – СПб.: «БХВ – Петербург», 2001

    5. Д. Флэнаган Java в примерах. Справочник. – СПб: «Символ – Плюс», 2003


    Правила техніки безпеки


      1. При виявленні найменших неполадок у роботі комп'ютера необхідно сповістити про це викладачеві або інженерові, що обслуговує дисплейний клас.

      2. Категорично заборонене студентові самостійно виправляти несправності в комп’ютері.

      3. При виникненні пожежної або іншої небезпеки необхідно повідомити викладачеві й організовано залишити помешкання.

    Суворо ЗАБОРОНЯЄТЬСЯ:

      • · торкатися до екрана й тильного боку дисплея, проводів живлення й пристроїв заземлення, з'єднувальних кабелів;

      • · порушувати порядок ввімкнення й вимкнення апаратних блоків, намагатись самостійно усунути виявлену несправність у роботі апаратури;

      • · класти на апаратуру сторонні предмети;

      • · працювати на комп'ютері у вологій одежі й з вологими руками.

    Під час роботи на комп’ютері НЕОБХІДНО:

    • · суворо дотримуватись положень інструкції з експлуатації апаратури;

    • · уважно слідкувати за справністю основних блоків і пристроїв;

    • · працювати на клавіатурі чистими сухими руками.

    Вимоги до оформлення звітів.


    Звіт по лабораторній роботі оформляється в електронному вигляді індивідуально кожним студентом.

    Титульний аркуш звіту повинен містити фразу: "Звіт з лабораторної роботи (назва роботи) студента групи (номер групи) (Прізвище, ініціали)". Внизу аркуша слід вказати поточний рік.

    Друга сторінка тексту, наступна за титульним аркушем, повинна починатися з формулювання мети роботи.

    Звіт повинен містити наступні основні розділи:

    1. Теоретична частина (короткий виклад).

    2. Докладні відповіді на питання, наведені в описі роботи.

    3. Опис поетапного виконання індивідуального завдання.

    При здачі звіту викладач може зробити усні та письмові зауваження, задати додаткові запитання.

    Обсяг звіту повинен бути оптимальним для розуміння того, що і як зробив студент, виконуючи роботу. Обов'язкові вимоги до звіту включають загальну і спеціальну грамотність викладу, а також акуратність оформлення.

    Після прийому викладачем звіт зберігається на відповідній кафедрі і студенту не видається.

    Після захисту роботи викладач повідомляє студенту про результат - зарахована робота або потребує доопрацювання.
    1   ...   23   24   25   26   27   28   29   30   31


    написать администратору сайта