Класс DatagramSocketImpl
- Все реализованные интерфейсы:
SocketOptions
public abstract class DatagramSocketImpl extends Object implements SocketOptions
- Замечание по реализации:
- Сокеты, созданные с помощью
DatagramSocketиMulticastSocketобщедоступных конструкторов, исторически делегировали все операции с сокетами реализацииDatagramSocketImplс именем "PlainDatagramSocketImpl".DatagramSocketиMulticastSocketс тех пор были изменены на новую реализацию, основанную наDatagramChannel. JDK по-прежнему поставляется со старой реализацией, чтобы позволить работе кода, зависящего от неопределенного поведения, которое отличается между старой и новой реализациями. Старая реализация будет использоваться, если виртуальная машина Java запускается с системной переменнойjdk.net.usePlainDatagramSocketImplустановленной для использования старой реализации. Она также может быть установлена в файле конфигурации сети JDK, расположенном в${java.home}/conf/net.properties. Значение свойства представляет собой строковое представление булева значения. Если оно установлено без значения, то по умолчанию используетсяtrue, следовательно, запуск с-Djdk.net.usePlainDatagramSocketImplили-Djdk.net.usePlainDatagramSocketImpl=trueнастроит виртуальную машину Java на использование старой реализации. Свойство и старая реализация будут удалены в будущей версии. - С:
- 1.1
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected FileDescriptor |
fd |
Объект дескриптора файла. |
protected int |
localPort |
Номер локального порта. |
Поля, объявленные в интерфейсе java.net.SocketOptions
IP_MULTICAST_IF, IP_MULTICAST_IF2, IP_MULTICAST_LOOP, IP_TOS, SO_BINDADDR, SO_BROADCAST, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, SO_RCVBUF, SO_REUSEADDR, SO_REUSEPORT, SO_SNDBUF, SO_TIMEOUT, TCP_NODELAY
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DatagramSocketImpl() |
Конструктор для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected abstract void |
bind |
Привязывает сокет датаграмм к локальному порту и адресу. |
protected abstract void |
close() |
Закрывает сокет. |
protected void |
connect |
Подключает сокет датаграмм к удаленному пункту назначения. |
protected abstract void |
create() |
Создает сокет датаграмм. |
protected void |
disconnect() |
Отключает сокет датаграмм от удалённого пункта назначения. |
protected FileDescriptor |
getFileDescriptor() |
Получает дескриптор файла сокета датаграмм. |
protected int |
getLocalPort() |
Получает локальный порт. |
protected <T> T |
getOption |
Вызывается для получения параметра сокета. |
protected abstract int |
getTimeToLive() |
Получает параметр TTL (время жизни). |
protected abstract byte |
getTTL() |
Устарело. используйте getTimeToLive вместо этого. |
protected abstract void |
join |
Подключается к мультипоточной группе. |
protected abstract void |
joinGroup |
Подключается к мультипоточной группе. |
protected abstract void |
leave |
Выходит из мультипоточной группы. |
protected abstract void |
leaveGroup |
Выходит из мультипоточной группы. |
protected abstract int |
peek |
Просматривает пакет, чтобы узнать, кто его отправил. |
protected abstract int |
peekData |
Просматривает пакет, чтобы узнать, кто его отправил. |
protected abstract void |
receive |
Принимает пакет датаграмм. |
protected abstract void |
send |
Отправляет пакет датаграмм. |
protected <T> void |
setOption |
Вызывается для установки параметра сокета. |
protected abstract void |
setTimeToLive |
Устанавливает параметр TTL (время жизни). |
protected abstract void |
setTTL |
Устарело. используйте setTimeToLive вместо этого. |
protected Set<SocketOption<?>> |
supportedOptions() |
Возвращает набор SocketOptions, поддерживаемых этим impl и сокетом этого impl (DatagramSocket или MulticastSocket) |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.net.SocketOptions
getOption, setOption
Подробное описание полей
localPort
protected int localPort
fd
protected FileDescriptor fd
Подробное описание конструкторов
DatagramSocketImpl
public DatagramSocketImpl()
Подробное описание методов
create
protected abstract void create() throws SocketException
- Возбуждает:
-
SocketException- если в базовом протоколе возникла ошибка, например, ошибка TCP.
bind
protected abstract void bind(int lport, InetAddress laddr) throws SocketException
- Параметры:
-
lport- локальный порт -
laddr- локальный адрес - Возбуждает:
-
SocketException- если в базовом протоколе возникла ошибка, например, ошибка TCP.
send
protected abstract void send(DatagramPacket p) throws IOException
- Параметры:
-
p- пакет для отправки. - Возбуждает:
-
IOException- если при отправке пакета датаграмм произошла ошибка ввода-вывода. -
PortUnreachableException- может быть вызвано, если сокет подключён к недоступному в данный момент месту назначения. Нет гарантии, что исключение будет вызвано.
connect
protected void connect(InetAddress address, int port) throws SocketException
Если удалённое место назначения, к которому подключён сокет, не существует или по другим причинам недоступно, и если для этого адреса получен пакет ICMP destination unreachable, то последующий вызов send или receive может выбросить исключение PortUnreachableException. Нет гарантии, что исключение будет выброшено.
- Параметры:
-
address- удалённый InetAddress для подключения -
port- номер удалённого порта - Возбуждает:
-
SocketException- может быть выброшено, если сокет не может быть подключен к удалённому месту назначения - С момента:
- 1.4
disconnect
protected void disconnect()
- С момента:
- 1.4
peek
protected abstract int peek(InetAddress i) throws IOException
InetAddress до адреса, от которого пришёл пакет.- Параметры:
-
i- объект InetAddress - Возвращает:
- номер порта, откуда пришёл пакет.
- Возбуждает:
-
IOException- если произошла ошибка ввода-вывода -
PortUnreachableException- может быть выброшено, если сокет подключён к недоступному в данный момент месту назначения. Нет гарантии, что исключение будет выброшено.
peekData
protected abstract int peekData(DatagramPacket p) throws IOException
DatagramPacket. Данные возвращаются, но не потребляются, так что последующая операция peekData/receive увидит те же данные.- Параметры:
-
p- полученный пакет. - Возвращает:
- номер порта, откуда пришёл пакет.
- Возбуждает:
-
IOException- если произошла ошибка ввода-вывода -
PortUnreachableException- может быть выброшено, если сокет подключён к недоступному в данный момент месту назначения. Нет гарантии, что исключение будет выброшено. - С момента:
- 1.4
receive
protected abstract void receive(DatagramPacket p) throws IOException
- Параметры:
-
p- полученный пакет. - Возбуждает:
-
IOException- если при получении пакета датаграмм произошла ошибка ввода-вывода. -
PortUnreachableException- может быть выброшено, если сокет подключён к недоступному в данный момент месту назначения. Нет гарантии, что исключение будет выброшено.
setTTL
@Deprecated protected abstract void setTTL(byte ttl) throws IOException
- Параметры:
-
ttl- байт, определяющий значение TTL - Возбуждает:
-
IOException- если при установке значения time-to-live произошла ошибка ввода-вывода. - См. также:
getTTL
@Deprecated protected abstract byte getTTL() throws IOException
- Возвращает:
- байт, представляющий значение TTL
- Возбуждает:
-
IOException- если при получении значения time-to-live произошла ошибка ввода-вывода - См. также:
setTimeToLive
protected abstract void setTimeToLive(int ttl) throws IOException
- Параметры:
-
ttl-intзначение time-to-live - Возбуждает:
-
IOException- если при установке значения time-to-live произошла ошибка ввода-вывода. - См. также:
getTimeToLive
protected abstract int getTimeToLive() throws IOException
- Возвращает:
intзначение time-to-live- Возбуждает:
-
IOException- если при получении значения time-to-live произошла ошибка ввода-вывода - См. также:
join
protected abstract void join(InetAddress inetaddr) throws IOException
- Параметры:
-
inetaddr- адрес мультивещания для присоединения. - Возбуждает:
-
IOException- если при присоединении к группе мультивещания произошла ошибка ввода-вывода.
leave
protected abstract void leave(InetAddress inetaddr) throws IOException
- Параметры:
-
inetaddr- адрес мультивещания для выхода. - Возбуждает:
-
IOException- если при выходе из группы мультивещания произошла ошибка ввода-вывода.
joinGroup
protected abstract void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
- Параметры:
-
mcastaddr- адрес для присоединения. -
netIf- определяет локальный интерфейс для получения пакетов мультивещания датаграмм - Возбуждает:
-
IOException- если при присоединении к группе мультивещания произошла ошибка ввода-вывода - С момента:
- 1.4
leaveGroup
protected abstract void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
- Параметры:
-
mcastaddr- адрес для выхода. -
netIf- определяет локальный интерфейс для выхода из группы - Возбуждает:
-
IOException- если при выходе из группы мультивещания произошла ошибка ввода-вывода - С момента:
- 1.4
close
protected abstract void close()
getLocalPort
protected int getLocalPort()
- Возвращает:
intпредставляющее значение локального порта
getFileDescriptor
protected FileDescriptor getFileDescriptor()
- Возвращает:
FileDescriptorобъект, представляющий дескриптор файла сокета для работы с датаграммами
setOption
protected <T> void setOption(SocketOption<T> name, T value) throws IOException
- Требования к реализации:
- Стандартная реализация этого метода сначала проверяет, что заданный параметр сокета
nameне равен null, затем выбрасываетUnsupportedOperationException. Подклассы должны переопределить этот метод с соответствующей реализацией. - Параметры типа:
-
T- Тип значения параметра сокета - Параметры:
-
name- Параметр сокета -
value- Значение параметра сокета. Значениеnullможет быть допустимым для некоторых параметров. - Возбуждает:
-
UnsupportedOperationException- если DatagramSocketImpl не поддерживает параметр -
IllegalArgumentException- если значение не допустимо для параметра -
IOException- если произошла ошибка ввода-вывода, или сокет закрыт -
NullPointerException- если имяnull - С момента:
- 9
getOption
protected <T> T getOption(SocketOption<T> name) throws IOException
- Требования к реализации:
- В реализации по умолчанию для этого метода сначала проверяется, что заданный параметр сокета
nameне равен null, а затем выбрасываетсяUnsupportedOperationException. Подклассы должны переопределить этот метод с соответствующей реализацией. - Параметры типа:
-
T- Тип значения параметра сокета - Параметры:
-
name- Параметр сокета - Возвращает:
- параметр сокета
- Исключения:
-
UnsupportedOperationException- если DatagramSocketImpl не поддерживает параметр -
IOException- если произошла ошибка ввода-вывода или сокет закрыт -
NullPointerException- если имяnull - С:
- 9
supportedOptions
protected Set<SocketOption<?>> supportedOptions()
- Требования к реализации:
- В реализации по умолчанию этот метод возвращает пустое множество. Подклассы должны переопределить этот метод с соответствующей реализацией.
- Возвращает:
- множество SocketOptions
- С:
- 9
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/DatagramSocketImpl.html