
Общее описание: TCP клиент. Родительский класс: SocketStream Метод:
void Connect(HostAddress& Addr); |
Подключается к узлу по указанному адресу |
Генерируемое исключение:
NetConnectException
Datagram (класс)
Конструктор:
Datagram(HostAddress& Me, ENetwork Network=eIPv4,
EProtocol Protocol=eDatagram);
Datagram(ENetwork Network=eIPv4, EProtocol Protocol=eDatagram);
Общее описание: UDP сокет. Родительский класс: Socket Методы:
void MinimizeDelay(bool Setting); |
Запрашивает режим минимальной задержки пакета |
void MaximizeThroughput(bool |
Запрашивает режим максимальной пропускной способ |
Setting); |
ности |
void MaximizeReliability(bool |
Запрашивает режим максимальной надежности |
Setting); |
|
void MinimizeCost(bool Setting); |
Запрашивает режим минимальной стоимости |
voidPermitFragNegotiation(EFrag |
Разрешает процедуру фрагментации |
Setting); |
|
Генерируемое исключение: |
|
NetConfigException |
|
Broadcast (класс)
Конструктор:
Broadcast(HostAddress& Me);
Общее описание: широковещательный сокет, работающий в рамках подсети. Родительскийкласс:Datagram
Методы: (отсутствуют).
Генерируемое исключение:
NetConfigException .
Приложение Г. Вспомогательные классы |
441 |
Ⱦɚɧɧɚɹ ɜɟɪɫɢɹ ɤɧɢɝɢ ɜɵɩɭɳɟɧɚ ɷɥɟɤɬɪɨɧɧɵɦ ɢɡɞɚɬɟɥɶɫɬɜɨɦ %RRNV VKRS Ɋɚɫɩɪɨɫɬɪɚɧɟɧɢɟ ɩɪɨɞɚɠɚ ɩɟɪɟɡɚɩɢɫɶ ɞɚɧɧɨɣ ɤɧɢɝɢ ɢɥɢ ɟɟ ɱɚɫɬɟɣ ɁȺɉɊȿɓȿɇɕ Ɉ ɜɫɟɯ ɧɚɪɭɲɟɧɢɹɯ ɩɪɨɫɶɛɚ ɫɨɨɛɳɚɬɶ ɩɨ ɚɞɪɟɫɭ piracy@books-shop.com
MessageGroup (класс)
Конструктор:
MessageGroup(HostAddress& Me, ENetwork Network=eIPv4);
Общее описание: групповой сокет. Родительский класс: Datagram Методы;
Connect(HostAddress& Address); |
Подключает сокет к адресу группового вещания |
void Join(HostAddress& Address, int |
Регистрирует сокет в адресной группе |
IFIndex=0) |
|
void Drop(HostAddress& Address); |
Отменяет регистрацию сокета в адресной группе |
Генерируемые исключения: |
|
NetConfigException |
|
NetConnectException |
|
RangeException |
|
Исключения Java
Ниже описаны все исключения, которые Java программа может сгенерировать при работе с сокетами.
lOException < ProtocolException |
|
< UnknownHostException |
|
< UnknownServiceExceptbn |
< BindException |
< SocketException |
|
|
< ConnectException |
|
< NoRouteToHostException |
Рис. Г.З. Иерархия классов исключений в Java
java.io.IOException (класс)
Конструктор:
IOException(); lOException(String msg);
Общее описание: исключение общего характера, произошедшее в процессе ввода вывода.
Родительский класс: Exception Дочерние исключения:
java.net.ProtocolException |
Ошибка протокола в классе Socket |
java.net.UnknownHostException |
Имя узла не найдено в базе данных DNS сервера |
java.net.unknownServiceException |
Предпринята попытка вызова неподдерживаемого сер |
|
виса |
442 |
Часть V. Приложения |
www.books-shop.com
java.net.SocketException (класс)
Конструктор:
SocketException();
SocketException(String msg);
Общее описание: исключение, возникшее при попытке вызова функции bind(), connect(), listen() или accept(); генерируется классами Socket, Server Socket, DatagramSocket и MulticastSocket.
Родительский класс: IOExceptian Дочерние исключения:
java.net.BindException |
Невозможно осуществить привязку к адресу/порту (как |
|
правило, это означает, что он уже используется другим |
|
процессом) |
java.net.ConnectException |
Узел недоступен, не найден, не отвечает или отсутству |
|
ет процесс, прослушивающий запросы по указанному |
|
порту |
java.net.NoRouteToHostException |
Маршрут к указанному узлу не может быть установлен |
Служебные классы Java
Ниже описан ряд служебных классов, часто используемых при работе с соке тами.
java.net.DatagramPacket (класс)
Конструктор:
DatagramPacket(byte[] buf, int Деп);
DatagramPacket(byte[] buf, int len, InetAddress addr, int port); DatagramPacket(byte[] buf, int Offset, int len);
DatagramPacket(byte[] buf,intOffset,intlen,InetAddressaddr,intport);
Общее описание: класс, управляющий массивами, в которые записываются принимаемые/отправляемые дейтаграммы.
Методы: |
|
|
|
InetAddress getAddress(); |
Возвращает/задаетадрес отправителя/получате |
||
void |
setAddress(InetAddress addr); |
ля пакета |
|
byte [ ] getData(); |
Возвращает/задает массив данных дейтаграммы |
||
void SetData(byte[] buf); |
|
|
|
void SetData(byte[] buf, int offset, int |
|
||
len); |
|
|
|
int |
getLength(); |
Возвращает/задает длину данных дейтаграммы |
|
void setLength(int length); |
|
|
|
Приложение Г. Вспомогательные классы |
443 |
www.books-shop.com
int getOffset(); |
Воpвращает смещение данных в массиве, пред |
|
назначенном для приёма или отправки |
int getPort(); |
Возвращает/задает порт отпрабителя/получателя |
void setPort(int port); |
пакета |
Генерируемые исключения: (отсутствуют).
java.net.InetAddress (класс)
Конструктор: (отсутствует).
Общее описание: класс, предназначенный для работы с адресами Internet; у клас са нет конструктора, а его объекты создаются с помощью статических методов.
Статические методы:
InetAddressgetByName(Stringhost); |
Возвращает адрес узла, заданный по умолчанию |
|
InetAddress getAHByName(String host); |
Возвращает все адреса указанного узла |
|
InetAddress getLocalHost(); |
Возвращает адрес локального узла |
|
Методы: |
|
|
String |
getHostAddress(); |
Возвращает адрес узла в символьном виде |
byte[]getAddress(); |
Возвращает адрес узла в виде массива байтов |
|
boolean |
isMulticastAddress(); |
Проверяет, попадает ли указанный адрес в диа |
|
|
пазон групповых адресов |
String |
getHostName(); |
Возвращает имя узла |
Генерируемое исключение: UnknownHostException
Классы ввода вывода Java
В Java имеется огромный набор классов, обрабатывающих различные аспекты ввода вывода. К сожалению, схема организации этих классов весьма сложна и запутанна. Ниже описаны классы, Имеющие отношение к сокетам.
Object < InputStream |
< ByteArraylnputStream |
< OutputStream |
< ObjectlnputStream |
< ByteArrayOutputStream |
|
< Reader |
< ObjectOutpufetrearn |
< BufferedReader |
|
< Writer |
< PrintWriter |
Рис. Г.4. Иерархия классов ввода!вывода в Java |
444 Часть V. Приложения
www.books-shop.com
java.io.InputStream (абстрактный класс)
Конструктор:
InputStream();
Общее описание: простейший входной поток. Родительский класс: Object
Методы:
int |
available(); |
|
Возвращает число байтов, которые можно прочесть без блокиро |
|
|
|
|
|
вания |
void |
close(); |
|
Закрывает канал |
|
void mark(int readlimit); |
Помечает текущую позицию потока для метода reset(), задавая |
|||
|
|
|
|
максимальный размер буфера упреждающего чтения |
boolean |
markSupportedf); |
Определяет, поддерживает ли потоковый объект методы |
||
|
|
|
|
mark()/reset() |
int |
read(); |
|
Читает одиночный байт из потока |
|
int |
read(byte [] |
arr); |
Читает массив байтов из потока |
|
int |
read(byte [] |
arr, int |
Читает массив байтов указанного размера, начиная с заданного |
|
offset, |
int length); |
смещения |
||
void |
reset(); |
|
Возвращается к последней помеченной позиции |
|
long |
skip(); |
|
Пропускает ближайшие п байтов потока |
Генерируемое исключение:
IOException
java.io.ByteArraylnputStream (класс)
Конструктор:
ByteArrayInputStream(byte[] buf);
ByteArrayInputStream(byte[] buf, int offset, int length);
Общее описание: позволяет создавать виртуальный входной поток из массива байтов (например, из дейтаграммы).
Родительский класс: InputStream
Методы: (отсутствуют; много переопределенных методов класса InputStream). Генерируемые исключения: (отсутствуют).
java.io.ObjectlnputStream (класс)
Конструктор:
ObjectInputstream(InputStream о);
Общее описание: с помощью этого класса можно читать передаваемые или со храненные объекты; объект InputStream создается в классе Socket.
Приложение Г. Вспомогательные классы |
445 |
www.books-shop.com
Родительский класс: InputStream Методы:
int |
available(); |
Возвращает число байтов, которые можно прочесть без бло |
|
|
кирования |
void |
close(); |
Закрывает канал |
void |
defaultReadObject(); |
Считывает из потока не статические и не временные поля те |
|
|
кущего объекта |
int read(); |
Считывает байт или массив байтов указанного размера, на |
|
int read(byte[] arr, int |
чиная с заданного смещения; метод readFully() читает все |
|
offset, int len); |
байты, необходимые для заполнения массива, блокируя про |
|
int |
readFully(byte[] arr); |
грамму при необходимости |
int readFully(byte[] arr, int |
|
|
offset, int len); |
|
|
boolean readBooleanf); |
Читает данные соответствующего типа |
|
byte readByte(); |
|
|
char readChar(); |
|
|
double readDouble(); |
|
|
float readFloat(); |
|
|
int |
readInt(); |
|
long readLong(); |
|
|
short readShort(); |
|
|
int |
readUnsignedByte(); |
|
int |
readUnsignedShort(); |
|
String readUTF(); |
Читает экземпляр класса Object; можно определить тип |
|
Object readObject(); |
объекта и выполнить соответствующую операцию приведения |
Генерируемые исключения:
IOException
ClassNotFoundException
NotActiveException
OptionalDataException
InvalidObjectException
SecurityException
StreamCorruptedException
java.io.OutputStream (абстрактный класс)
Конструктор:
OutputStream();
Общее описание: простейший выходной поток. Родительский класс: Object
Методы:
446 |
Часть V. Приложения |
www.books-shop.com
void close)); |
|
Закрывает канал |
|
void |
flush(); |
|
Выталкивает записанные данные из буферов |
void write(byte b); |
Записывает одиночный байт в поток |
||
int |
write(byte[] |
arr); |
Записывает массив байтов в поток |
int |
write(byte[] |
arr, int |
Записывает в поток массив байтов указанного размера, на |
offset, int len); |
|
чиная с заданного смещения |
Генерируемое исключение:
IOException
java.io.ByteArrayOutputStream (класс)
Конструктор:
ByteArrayOutputStreain();
ByteArrayOutputStream(int size);
Общее описание: позволяет записывать потоковые данные в массив байтов. Родительский класс: OutputStream
Методы:
void reset(); |
Очищает буферы и обнуляет внутренний массив |
||
int |
write(byte[] arr, int |
Записывает массив байтов указанного размера, начиная с |
|
offset, |
int len); |
заданного смещения |
|
byte[] |
toByteArray(); |
Возвращает массив потоковых данных |
|
intsize(); |
Возвращает текущий размер буфера |
||
String toString( String |
Возвращает внутренние данные в текстовом представлении |
||
encoder); |
|
||
void write (int b); |
Записывает одиночный байт |
||
void |
writeTo(OutputStream о); |
Передает массив байтов через объект OutputStream' |
Генерируемые исключения: (отсутствуют).
java.io.ObjectOutputStream (класс)
Конструктор:
ObjectOutputStream(OutputStream о);
Общее описание: с помощью этого класса можно передавать и сохранять объ екты; объект OutputStream создается в классе Socket.
Родительский класс:OutputStream Методы:
void |
close(); |
Закрывает канал |
|
void |
defaultwrite0bject(); |
Записывает в поток не статические и не временные поля те |
|
|
|
кущего объекта; этот метод вызывается только в методе |
|
Приложение Г. Вспомогательные классы |
447 |
www.books-shop.com
|
|
|
|
writeObject() в процессе сериализации |
int |
flush(); |
|
|
Выталкивает записанные данные из буферов |
int |
reset(); |
|
|
Сбрасывает информацию, записанную в поток |
void write(byte b); |
|
Записывает одиночный байт или массив байтов указанного |
||
int |
write(byte[] |
arr); |
|
размера, начиная с заданной позиции |
int |
write(byte[] |
arr, |
int |
|
offset, int len); |
|
|
|
|
voidwriteBoolean(booleanb); |
Записывает данные соответствующего типа |
|||
void writeByte(byte b); |
|
|||
void |
writeBytes(String s); |
|
||
void writeChar(int c); |
|
|
||
void writeChars(String s); |
|
|||
voidwriteDouble(doubled); |
|
|||
void |
writeFloat(float |
f); |
|
|
void |
writeInt(int |
i); |
|
|
void writeLong(long l); |
|
|||
void writeShort(int us); |
|
|||
void writeUTF(String s); |
Записывает буферизованные поля в поток |
|||
int |
writeFields(); |
|
|
|
void writeObject(Object o); |
Записывает экземпляр класса object |
Генерируемые исключения:
IOException
SecurityException
java.io.BufferedReader(класс)
Конструктор:
BufferedReader(Reader i);
BufferedReader(Reader i, int size);
Общее описание: обеспечивает буферизацию входного потока, благодаря чему Повышается производительность; обладает средствами распознавания строк тек ста; параметр size задает размер буфера.
Родительский класс: Reader Методы:
void |
close(); |
Закрывает канал |
|
void |
mark(int readlimit); |
Помечает текущую позицию потока, задавая максимальный |
|
|
|
|
размер буфера упреждающего чтения |
boolean |
markSupported(); |
Проверяет, поддерживает ли потоковый объект методы |
|
|
|
|
mark()/reset() |
int read(); |
Читает одиночный байт из потока |
||
int read(byte[] arr, int |
Читает массив байтов указанного размера, начиная с задан |
||
offset, |
int length); |
ной ПОЗИЦИИ |
|
448 |
|
|
Часть V. Приложения |
www.books-shop.com
String readLine(); |
Читает из потока строку текста (без символа конца строки) |
|
boolean ready(); |
Возвращает true, если имеются данные для чтения |
|
void |
reset(); |
Возвращается к последней помеченной позиции |
long |
skip(long n); |
Пропускает ближайшие n байтов потока |
Генерируемое исключение:
IOException
java.io.PrintWriter (класс)
Конструктор:
PrintWriter(Writer о);
PrintWriter(Writer о, boolean autoFlush);
PrintWriter(OutputStream о);
PrintWriter(OutputStream о, boolean autoFlush);
Общее описание: инкапсулирует выходной символьный поток; флаг autoFlush задает автоматическое выталкивание данных из буферов при вызове метода println().
Родительский класс: Writer Методы:
boolean checkError(); |
Выталкивает содержимое буфера и возвращает true, если |
|
произошла ошибка |
void close(); |
Закрывает канал |
int flush(); |
Выталкивает записанные данные из буферов |
void print(boolean b); void print(char c); void print(char[] s); void print(double d); void print(float f); void print(int i); void print(long 1); void print(Object obj); void print(String s);
void println();
void println(boolean b); void println(char c); void println(char[] s); void println(double d); void println(float f); void println(int i); void println(long 1); void println(0bject obj); void println(String s);
void write(byte b);
Записывает данные соответствующего типа; к объекту типа Object можно применить метод String.valueOf() для преобразования данных
Записывает данные соответствующего типа, добавляя в кон це символ новой строки; если установлена опция autoFlush, происходит запись содержимого буфера в поток
Записывает одиночный байт в поток
Приложение Г. Вспомогательные классы |
449 |
www.books-shop.com
int |
write(byte[] |
arr); |
Записывает массив символов в поток |
int |
write(byte[] |
arr, int |
Записывает в поток массив символов указанного размера, |
offset, int len); |
|
начиная с заданного смещения |
|
int |
write(String |
s); |
Записывает строку в поток |
int |
write(String |
s, int offset, |
Записывает в поток строку указанного размера, начиная с |
int len); |
|
заданного смещения |
Генерируемые исключения:
IOException
SecurityException
Классы сокетов java
В Java имеется четыре класса сокетов IPv4: Socket, ServerSocket, DatagramSocket и MulticastSocket. Ниже описан каждый из них.
java.net.Socket (класс)
Конструктор:
Socket(String host, int port); Socket(InetAddress addr, int port);
Socket(String host, int port, InetAddress lAddr, int lPort); Socket(InetAddress addr, int port, InetAddress lAddr, int lPort);
Общее описание: класс, описывающий базовый интерфейс сетевого взаимо действия (TCP).
Родительский класс: Object Методы:
void |
close(); |
Закрывает сокет |
|
InetAddress |
getInetAddress(); |
Возвращает адрес узла на противоположном конце со |
|
|
|
|
единения |
InputStream |
getInputstream(); |
Возвращает потоковый объект InputStream, предна |
|
|
|
|
значенный для приёма сообщений |
boolean getKeepAlive(); |
Проверяет, активизирован ли режим поддержания ак |
||
|
|
|
тивности соединения |
void |
setKeepAlive(boolean bn); |
Удерживает соединение активным |
|
InetAddress |
getLocalAddress(); |
Возвращает локальный адрес, к которому подключен |
|
|
|
|
сокет |
int |
getbocalPort(); |
Возвращает номер локального порта |
|
OutputStream getOutputStream(); |
Возвращает потоковый объект OutputStream, предна |
||
|
|
|
значенный для отправки сообщений |
int |
getPortf); |
Возвращает номер порта однорангового компьютера |
|
450 |
|
|
Часть V. Приложения |
www.books-shop.com