
- •30.Общее представление о потоках ввода/вывода
- •31.Байтовые и символьные потоки
- •32. Определение файла. Тестирование проверка объектов File
- •34. Сериализация
- •35. Обработка исключений в Java
- •36. Многопоточное программирование
- •37. Создание потока и его жизненный цикл
- •38. Управление приоритетами и ThreadGroup
- •39. Потоки-демоны
- •40. Методы synchronized
- •41. Коллекции
- •42. Списки
- •43. 43. Множества
- •44. Карты отображений
- •45. Обзор сокетов
- •49. Дейтаграммы
- •46. Сетевые классы и интерфейсы 47. Производственные методы 48. Сокеты tcp/ip клиентов и серверов
- •50. Основы оконной графики 51. Иерархия классов awt
- •Класс Applet
- •52. Свойства класса Component
- •53. Класс Container
- •54. Наследники класса Component
- •55. Классы Choice и List
- •56. Классы TextComponent, TextField, TextArea
- •57. Наследники Container
- •58. Swing-технология
- •59. Обработка событий в Java
- •60. Классы-адаптеры
- •61. Понятие и терминология jdbc 62. Связь и различия jdbc и odbc
- •63. Драйвера, соединения и запросы
- •64. DriverManager
- •65. Создание соединения с источником данных
- •66. Интерфейсы Statement, PreparedStatement и CallableStatement
- •69. Использование потоков в апплетах
- •70. Основы xml
- •71. Xml. Схема dtd. Элемент Schema схемы xml
- •72. Ссылки xml
- •74. Язык xLink (Атрибуты связующих элементов xLink, возможные значения атрибута xlink:show, возможные значения атрибута xlink:actuate)
- •75. Язык xPointer (Синтаксис xPointer, элементы абсолютного обнаружения xPointer, выражения отношений, фильтры атрибутов и их значений)
- •76. Объектная модель документа xml – dom
- •77. Simple api для xml (sax)
- •78. Язык преобразований xslt (Операционный xslt, процесс преобразования xsl, использование xslt, преобразования xml в html)
- •80. Сервлеты: структура, назначение и преимущества
- •81. Жизненный цикл сервлета
- •83. Пакеты javax.Servlet и javax.Servlet.Http
- •84. Технология rmi. Сравнение распределенных и нераспределенных приложений
- •85. Архитектура rmi
45. Обзор сокетов
Передача данных по сети - сложный процесс, включающий в себя определение пути доставки данных, организацию взаимодействия, алгоритмы синхронизации, обработки сбойных ситуаций и т.п. Программное обслуживание такого процесса сложное. Для упрощения введено понятие сокета (гнезда), как конечной точки коммуникации. Сокет(гнездо, разъем) – это программная абстракция, используемая для представления “терминалов” соединений между двумя машинами.
Каждый из сокетов определяется типом и ассоциированным с ним процессом. Реально для передачи организуются определенные дескрипторы TCP-соединения, т.н. гнезда (socket): гнездо сервера и гнездо клиента, которые в Internet домене включают в себя IP-адреса сервера и клиента и номера портов, через которые они взаимодействуют. Сервер, обычно, имеет закрепленный и постоянный во взаимодействии номер порта, а клиенту, обращающемуся по этому номеру для связи к серверу, назначается некоторый другой (эфемерный) номер порта после установления соединения с сервером на сеанс их взаимодействия и таким образом основной порт освобождается, для установления последующих связей (номер порта выбирается сервером из числа незанятых в диапазоне от 1024 до 65535).
Сокеты для работы в сети можно создать 2-х типов:
1) Потоковые для TCP-соединения. TCP могут передавать даннные только между 2-мя приложениями, так как они предполагают наличие канала между этими приложениями.
2) Датаграммные. Для датаграмм не нужно создавать канал, данные посылаются приложению с использованием адреса, состоящего из сокета и номера порта. (В датаграммах не гарантируется доставка и корректность последовательности передачи пакетов) Для передачи датаграмм не нужны ни механизмы подтверждения связи, ни механизмы управления потоком данных.
Для TCP-соединений в JAVA используется два класса сокетов: ServerSocket – класс используемый сервером, чтобы “слушать” входящие соединения и Socket - используемый клиентом для инициирования соединения.
49. Дейтаграммы
UDP представляет собой альтернативу ТСР, требующую меньших накладных расходов. В отличие от ТСР, UDP имеет следующие характеристики:
Ненадежный сетевой протокол. UDP не имеет ни встроенного механизма обнаружения ошибок, ни средств повторной пересылки поврежденных или потерянных данных.
Без установления логического соединения. Перед пересылкой данных UDP не устанавливает логического соединения. Информация пересылается в предположении, что принимающая сторона ее ожидает.
Основан на сообщениях. Позволяет приложениям пересылать информацию в виде сообщений, передаваемых посредством дейтаграмм (datagram), которые являются единицами передачи данных в UDP.
Как и в ТСР, в UDP применяется схема адресации с использованием портов, позволяющая нескольким приложениям параллельно принимать и посылать данные. В то же время порты UDP отличаются от портов ТСР. Например, одно приложение может отзываться на номер 512 порта UDP, а при этом другой независимый сервис может обрабатывать порт 512, относящийся к ТСР.
UDP существенно отличается от ТСР. Наиболее подходящая для UDP аналогия — связь посредством почтовых открыток.
В протоколе UDP диалог должен быть разделен на небольшие сообщения, которые умещаются в небольшой пакет определенного размера. Когда посылается сообщение, нельзя быть уверенным, что ответ будет получен: сообщение могло быть потеряно по пути, мог потеряться ответ получателя, получатель также мог игнорировать сообщение.Почтовые открытки, которыми обмениваются сетевые программы, называются дейтаграммами (datagrams). Дейтаграмма содержит массив байтов. Принимающая программа может извлечь этот массив и декодировать информацию, а затем, возможно, послать ответную дейтаграмму.Как и для протокола ТСР, программирование для UDP будет использовать абстракцию сокета, но сокеты UDP сильно отличаются от сокетов ТСР. Если продолжить почтовую аналогию, то сокет UDP соответствует почтовому ящику.Необходимые средства поддержки протокола UDP находятся в пакете java.net. Для создания дейтаграмм в Java существует класс DatagramPacket. При получении дейтаграммы по протоколу UDP класс DatagramPacket используется также для чтения данных, адреса отправителя и метаинформации.