Spec-Zone.ru › OpenJDK 8

Класс DatagramSocket

  • java.lang.Object
    • java.net.DatagramSocket
Все реализованные интерфейсы:
Closeable, AutoCloseable
Непосредственные известные подклассы:
MulticastSocket

public class DatagramSocket
extends Object
implements Closeable

Этот класс представляет сокет для отправки и получения пакетов датаграмм.

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

По возможности, только что созданный DatagramSocket имеет включенный параметр сокета SO_BROADCAST для возможности передачи широковещательных датаграмм. Для получения широковещательных пакетов сокет DatagramSocket должен быть привязан к универсальному адресу. В некоторых реализациях широковещательные пакеты также могут быть получены, когда DatagramSocket привязан к более конкретному адресу.

Пример: DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888)); что эквивалентно: DatagramSocket s = new DatagramSocket(8888); Оба случая создадут сокет DatagramSocket, способный принимать широковещательные данные на UDP-порту 8888.

Since:
JDK1.0
See Also:
DatagramPacket, DatagramChannel

Конструкторы

Модификатор Конструктор и описание
DatagramSocket()

Создаёт сокет для дейтаграмм и привязывает его к любому доступному порту на локальном хосте.

protected DatagramSocket(DatagramSocketImpl impl)

Создаёт свободный сокет для дейтаграмм с указанным DatagramSocketImpl.

DatagramSocket(int port)

Создаёт сокет для дейтаграмм и привязывает его к указанному порту на локальном хосте.

DatagramSocket(int port, InetAddress laddr)

Создаёт сокет для дейтаграмм, привязанный к указанному локальному адресу.

DatagramSocket(SocketAddress bindaddr)

Создаёт сокет для дейтаграмм, привязанный к указанному локальному адресу сокета.

Методы

Модификатор и тип Метод и описание
void bind(SocketAddress addr)

Привязывает этот DatagramSocket к определённому адресу и порту.

void close()

Закрывает этот сокет для дейтаграмм.

void connect(InetAddress address, int port)

Подключает сокет к удалённому адресу для этого сокета.

void connect(SocketAddress addr)

Подключает этот сокет к удалённому адресу сокета (IP-адрес + номер порта).

void disconnect()

Отключает сокет.

boolean getBroadcast()

Проверяет, включен ли SO_BROADCAST.

DatagramChannel getChannel()

Возвращает уникальный объект DatagramChannel, связанный с этим сокетом для дейтаграмм, если таковой имеется.

InetAddress getInetAddress()

Возвращает адрес, к которому подключён этот сокет.

InetAddress getLocalAddress()

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

int getLocalPort()

Возвращает номер порта на локальном хосте, к которому привязан этот сокет.

SocketAddress getLocalSocketAddress()

Возвращает адрес конечной точки, к которой привязан этот сокет.

int getPort()

Возвращает номер порта, к которому подключён этот сокет.

int getReceiveBufferSize()

Получает значение параметра SO_RCVBUF для этого DatagramSocket, то есть размер буфера, используемого платформой для входных данных в этом DatagramSocket.

SocketAddress getRemoteSocketAddress()

Возвращает адрес конечной точки, к которой подключён этот сокет, или null если он не подключён.

boolean getReuseAddress()

Проверяет, включен ли SO_REUSEADDR.

int getSendBufferSize()

Получает значение параметра SO_SNDBUF для этого DatagramSocket, то есть размер буфера, используемого платформой для вывода в этом DatagramSocket.

int getSoTimeout()

Получает значение параметра SO_TIMEOUT.

int getTrafficClass()

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

boolean isBound()

Возвращает состояние привязки сокета.

boolean isClosed()

Возвращает, закрыт ли сокет или нет.

boolean isConnected()

Возвращает состояние подключения сокета.

void receive(DatagramPacket p)

Принимает пакет дейтаграммы от этого сокета.

void send(DatagramPacket p)

Отправляет пакет дейтаграммы из этого сокета.

void setBroadcast(boolean on)

Включает/отключает SO_BROADCAST.

static void setDatagramSocketImplFactory(DatagramSocketImplFactory fac)

Устанавливает фабрику реализации сокета для дейтаграмм для приложения.

void setReceiveBufferSize(int size)

Устанавливает параметр SO_RCVBUF в указанное значение для этого DatagramSocket.

void setReuseAddress(boolean on)

Включает/отключает параметр сокета SO_REUSEADDR.

void setSendBufferSize(int size)

Устанавливает параметр SO_SNDBUF в указанное значение для этого DatagramSocket.

void setSoTimeout(int timeout)

Включает/выключает SO_TIMEOUT с указанным таймаутом в миллисекундах.

void setTrafficClass(int tc)

Устанавливает октет класса трафика или типа обслуживания в заголовке IP-дейтаграммы для дейтаграмм, отправленных из этого DatagramSocket.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

DatagramSocket

public DatagramSocket()
               throws SocketException

Создаёт сокет для работы с датаграммами и связывает его с любым доступным портом на локальном компьютере. Сокет будет привязан к адресу wildcard, выбранному ядром.

Если установлен менеджер безопасности, его метод checkListen сначала вызывается с аргументом 0, чтобы убедиться, что операция разрешена. Это может привести к исключению SecurityException.

Исключения:
SocketException - если сокет не может быть открыт или привязан к указанному локальному порту.
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
См. также:
SecurityManager.checkListen(int)

DatagramSocket

protected DatagramSocket(DatagramSocketImpl impl)

Создаёт не привязанный сокет для работы с датаграммами с указанным DatagramSocketImpl.

Параметры:
impl - экземпляр DatagramSocketImpl, который подкласс желает использовать в DatagramSocket.
С тех пор:
1.4

DatagramSocket

public DatagramSocket(SocketAddress bindaddr)
               throws SocketException

Создаёт сокет для работы с датаграммами, привязанный к указанному локальному адресу сокета.

Если адрес null, создаёт не привязанный сокет.

Если установлен менеджер безопасности, его метод checkListen сначала вызывается с номером порта из адреса сокета, чтобы убедиться, что операция разрешена. Это может привести к исключению SecurityException.

Параметры:
bindaddr - локальный адрес сокета для привязки, или null для не привязанного сокета.
Исключения:
SocketException - если сокет не может быть открыт или привязан к указанному локальному порту.
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
С тех пор:
1.4
См. также:
SecurityManager.checkListen(int)

DatagramSocket

public DatagramSocket(int port)
               throws SocketException

Создаёт сокет для работы с датаграммами и связывает его с указанным портом на локальном компьютере. Сокет будет привязан к адресу wildcard, выбранному ядром.

Если установлен менеджер безопасности, его метод checkListen сначала вызывается с аргументом port, чтобы убедиться, что операция разрешена. Это может привести к исключению SecurityException.

Параметры:
port - используемый порт.
Исключения:
SocketException - если сокет не может быть открыт или привязан к указанному локальному порту.
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
См. также:
SecurityManager.checkListen(int)

DatagramSocket

public DatagramSocket(int port,
                      InetAddress laddr)
               throws SocketException

Создаёт сокет для работы с датаграммами, привязанный к указанному локальному адресу. Локальный порт должен быть в диапазоне от 0 до 65535 включительно. Если IP-адрес равен 0.0.0.0, сокет будет привязан к адресу wildcard, выбранному ядром.

Если установлен менеджер безопасности, его метод checkListen сначала вызывается с аргументом port, чтобы убедиться, что операция разрешена. Это может привести к исключению SecurityException.

Параметры:
port - используемый локальный порт
laddr - локальный адрес для привязки
Исключения:
SocketException - если сокет не может быть открыт или привязан к указанному локальному порту.
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
С тех пор:
JDK1.1
См. также:
SecurityManager.checkListen(int)

Методы

bind

public void bind(SocketAddress addr)
          throws SocketException

Привязывает этот DatagramSocket к определённому адресу и порту.

Если адрес null, система выберет свободный порт и действительный локальный адрес для привязки сокета.

Параметры:
addr - адрес и порт для привязки.
Исключения:
SocketException - если произошла ошибка при привязке, или сокет уже привязан.
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
IllegalArgumentException - если addr — подкласс SocketAddress, не поддерживаемый этим сокетом.
С тех пор:
1.4

connect

public void connect(InetAddress address,
                    int port)

Подключает сокет к удалённому адресу для этого сокета. Когда сокет подключён к удалённому адресу, пакеты могут быть отправлены только на этот адрес или получены от него. По умолчанию сокет для работы с датаграммами не подключён.

Если удалённый пункт назначения, к которому подключён сокет, не существует или недоступен, и если для этого адреса был получен пакет ICMP destination unreachable, последующий вызов отправки или получения может вызвать исключение PortUnreachableException. Замечание: нет гарантии, что исключение будет вызвано.

Если установлен менеджер безопасности, он вызывается для проверки доступа к удалённому адресу. В частности, если заданный address является multicast address, метод менеджера безопасности checkMulticast вызывается с указанным address. В противном случае, методы менеджера безопасности checkConnect и checkAccept вызываются с заданным address и port, чтобы проверить, разрешено ли отправлять и получать датаграммы, соответственно.

Когда сокет подключён, receive и send не будут выполнять проверки безопасности на входящие и исходящие пакеты, кроме соответствия адреса и порта пакета и сокета. При операции отправки, если адрес пакета установлен, а адрес пакета и адрес сокета не совпадают, будет выброшено исключение IllegalArgumentException. Сокет, подключённый к многоадресной группе, может использоваться только для отправки пакетов.

Параметры:
address - удалённый адрес для сокета
port - удалённый порт для сокета.
Исключения:
IllegalArgumentException - если адрес null, или порт вне диапазона.
SecurityException - если установлен менеджер безопасности и он не разрешает доступ к данному удалённому адресу
См. также:
disconnect()

connect

public void connect(SocketAddress addr)
             throws SocketException

Подключает этот сокет к удалённому адресу сокета (IP-адрес + номер порта).

Если задан InetSocketAddress, этот метод ведёт себя так, как если бы вызывался connect(InetAddress,int) с IP-адресом и номером порта заданных адресов сокета.

Параметры:
addr - удалённый адрес.
Исключения:
SocketException - если подключение не удалось
IllegalArgumentException - если addr является null, или addr — подкласс SocketAddress, не поддерживаемый этим сокетом
SecurityException - если установлен менеджер безопасности и он не разрешает доступ к данному удалённому адресу
С тех пор:
1.4

disconnect

public void disconnect()

Отключает сокет. Если сокет закрыт или не подключён, этот метод не оказывает влияния.

См. также:
connect(java.net.InetAddress, int)

isBound

public boolean isBound()

Возвращает состояние привязки сокета.

Если сокет был привязан до closed, этот метод будет продолжать возвращать true после закрытия сокета.

Возвращает:
true, если сокет успешно привязан к адресу
С тех пор:
1.4

isConnected

public boolean isConnected()

Возвращает состояние подключения сокета.

Если сокет был подключён до closed, этот метод будет продолжать возвращать true после закрытия сокета.

Возвращает:
true, если сокет успешно подключён к серверу
С тех пор:
1.4

getInetAddress

public InetAddress getInetAddress()

Возвращает адрес, к которому подключён этот сокет. Возвращает null если сокет не подключён.

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

Возвращает:
адрес, к которому подключён этот сокет.

getPort

public int getPort()

Возвращает номер порта, к которому подключён этот сокет. Возвращает -1 если сокет не подключён.

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

Возвращает:
номер порта, к которому подключён этот сокет.

getRemoteSocketAddress

public SocketAddress getRemoteSocketAddress()

Возвращает адрес конечной точки, к которой подключен этот сокет, или null если он не подключен.

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

Возвращает:
a SocketAddress представляющий удалённый конечный пункт этого сокета, или null если он ещё не подключён.
С момента:
1.4
См. также:
getInetAddress(), getPort(), connect(SocketAddress)

getLocalSocketAddress

public SocketAddress getLocalSocketAddress()

Возвращает адрес конечной точки, к которой привязан этот сокет.

Возвращает:
a SocketAddress представляющий локальный конечный пункт этого сокета, или null если он закрыт или ещё не привязан.
С момента:
1.4
См. также:
getLocalAddress(), getLocalPort(), bind(SocketAddress)

send

public void send(DatagramPacket p)
          throws IOException

Отправляет пакет данных из этого сокета. DatagramPacket содержит информацию, указывающую данные для отправки, их длину, IP-адрес удалённого узла и номер порта на удалённом узле.

Если существует диспетчер безопасности и сокет в данный момент не подключён к удалённому адресу, этот метод сначала выполняет некоторые проверки безопасности. Во-первых, если p.getAddress().isMulticastAddress() истинно, этот метод вызывает метод checkMulticast диспетчера безопасности с p.getAddress() в качестве аргумента. Если результат этой проверки ложно, этот метод вызывает метод checkConnect диспетчера безопасности с аргументами p.getAddress().getHostAddress() и p.getPort(). Каждый вызов метода диспетчера безопасности может привести к SecurityException, если операция запрещена.

Параметры:
p - отправляемый DatagramPacket.
Исключения:
IOException - если произошла ошибка ввода-вывода.
SecurityException - если существует диспетчер безопасности, и его метод checkMulticast или checkConnect не допускает отправки.
PortUnreachableException - может быть выброшено, если сокет подключен к недоступному в данный момент пункту назначения. Обратите внимание, что нет гарантии, что исключение будет выброшено.
IllegalBlockingModeException - если у этого сокета есть связанный канал и он в режиме без ожидания.
IllegalArgumentException - если сокет подключён, и адрес подключения отличается от адреса пакета.
См. также:
DatagramPacket, SecurityManager.checkMulticast(InetAddress), SecurityManager.checkConnect(java.lang.String, int)

receive

public void receive(DatagramPacket p)
             throws IOException

Принимает пакет данных от этого сокета. По возвращении этого метода буфер DatagramPacket заполняется полученными данными. Пакет данных также содержит IP-адрес отправителя и номер порта на машине отправителя.

Этот метод блокируется до тех пор, пока не будет получен пакет данных. Поле length объекта пакета данных содержит длину полученного сообщения. Если сообщение длиннее, чем длина пакета, сообщение усекается.

Если существует диспетчер безопасности, пакет данных не может быть получен, если метод checkAccept диспетчера безопасности не разрешает это.

Параметры:
p - DatagramPacket для размещения входящих данных.
Исключения:
IOException - если произошла ошибка ввода-вывода.
SocketTimeoutException - если ранее был вызван метод setSoTimeout и таймаут истек.
PortUnreachableException - может быть выброшено, если сокет подключён к недоступному в данный момент пункту назначения. Обратите внимание, что нет гарантии, что исключение будет выброшено.
IllegalBlockingModeException - если у этого сокета есть связанный канал и он в режиме без ожидания.
См. также:
DatagramPacket, DatagramSocket

getLocalAddress

public InetAddress getLocalAddress()

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

Если существует диспетчер безопасности, его метод checkConnect сначала вызывается с адресом хоста и -1 в качестве аргументов, чтобы проверить, разрешена ли операция.

Возвращает:
локальный адрес, к которому привязан сокет, null если сокет закрыт, или InetAddress представляющий wildcard адрес, если сокет не привязан или метод checkConnect диспетчера безопасности не разрешает операцию
С момента:
1.1
См. также:
SecurityManager.checkConnect(java.lang.String, int)

getLocalPort

public int getLocalPort()

Возвращает номер порта на локальном узле, к которому привязан этот сокет.

Возвращает:
номер порта на локальном узле, к которому привязан этот сокет, -1 если сокет закрыт, или 0 если он ещё не привязан.

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException

Включает/выключает SO_TIMEOUT с указанным таймаутом в миллисекундах. При ненулевом таймауте вызов receive() для этого DatagramSocket будет блокироваться только на это время. Если таймаут истечёт, будет возбуждено исключение java.net.SocketTimeoutException, хотя DatagramSocket останется действительным. Опция должна быть включена до начала блокирующей операции, чтобы иметь эффект. Таймаут должен быть > 0. Таймаут 0 интерпретируется как бесконечный таймаут.

Параметры:
timeout - указанный таймаут в миллисекундах.
Исключения:
SocketException - если возникла ошибка в базовом протоколе, например, ошибка UDP.
С момента:
JDK1.1
См. также:
getSoTimeout()

getSoTimeout

public int getSoTimeout()
                 throws SocketException

Получить значение настройки SO_TIMEOUT. 0 означает, что опция отключена (т.е. таймаут бесконечен).

Возвращает:
значение настройки SO_TIMEOUT
Исключения:
SocketException - если возникла ошибка в базовом протоколе, например, ошибка UDP.
С момента:
JDK1.1
См. также:
setSoTimeout(int)

setSendBufferSize

public void setSendBufferSize(int size)
                       throws SocketException

Устанавливает опцию SO_SNDBUF для этого DatagramSocket. SO_SNDBUF используется реализацией сети как подсказка для настройки буферов сетевого ввода-вывода. Настройка SO_SNDBUF может также использоваться реализацией сети для определения максимального размера пакета, который может быть отправлен по этому сокету.

Так как SO_SNDBUF является подсказкой, приложениям, которые хотят проверить размер буфера, следует вызвать getSendBufferSize().

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

Примечание: Если send(DatagramPacket) используется для отправки DatagramPacket, размер которого больше, чем настройка SO_SNDBUF, то реализация может отправить пакет или отклонить его.

Параметры:
size - размер, на который нужно установить размер буфера отправки. Это значение должно быть больше 0.
Исключения:
SocketException - если возникла ошибка в базовом протоколе, например, ошибка UDP.
IllegalArgumentException - если значение равно 0 или отрицательно.
См. также:
getSendBufferSize()

getSendBufferSize

public int getSendBufferSize()
                      throws SocketException

Получить значение опции SO_SNDBUF для этого DatagramSocket, то есть размер буфера, используемого платформой для вывода по этому DatagramSocket.

Возвращает:
значение опции SO_SNDBUF для этого DatagramSocket
Исключения:
SocketException - если возникла ошибка в базовом протоколе, например, ошибка UDP.
См. также:
setSendBufferSize(int)

setReceiveBufferSize

public void setReceiveBufferSize(int size)
                          throws SocketException

Устанавливает опцию SO_RCVBUF для этого DatagramSocket. SO_RCVBUF используется реализацией сети как подсказка для настройки буферов сетевого ввода-вывода. Настройка SO_RCVBUF может также использоваться реализацией сети для определения максимального размера пакета, который может быть получен по этому сокету.

Так как SO_RCVBUF является подсказкой, приложениям, которые хотят проверить, какой размер буфера был установлен, следует вызвать getReceiveBufferSize().

Увеличение SO_RCVBUF может позволить реализации сети буферизовать несколько пакетов, когда пакеты прибывают быстрее, чем они принимаются с помощью receive(DatagramPacket).

Примечание: Реализация может принимать пакеты, размер которых больше, чем SO_RCVBUF.

Параметры:
size - размер, на который нужно установить размер буфера приёма. Это значение должно быть больше 0.
Исключения:
SocketException - если возникла ошибка в базовом протоколе, например, ошибка UDP.
IllegalArgumentException - если значение равно 0 или отрицательно.
См. также:
getReceiveBufferSize()

getReceiveBufferSize

public int getReceiveBufferSize()
                         throws SocketException

Получить значение опции SO_RCVBUF для этого DatagramSocket, то есть размер буфера, используемого платформой для ввода по этому DatagramSocket.

Возвращает:
значение опции SO_RCVBUF для этого DatagramSocket
Исключения:
SocketException - если возникла ошибка в базовом протоколе, например, ошибка UDP.
См. также:
setReceiveBufferSize(int)

setReuseAddress

public void setReuseAddress(boolean on)
                     throws SocketException

Включить/выключить опцию сокета SO_REUSEADDR.

Для UDP-сокетов может потребоваться привязать более одного сокета к одному адресу сокета. Это обычно требуется для приема мультивещательных пакетов (см. MulticastSocket). Опция сокета SO_REUSEADDR позволяет привязывать несколько сокетов к одному адресу сокета, если опция сокета SO_REUSEADDR включена до привязки сокета с помощью bind(SocketAddress).

Примечание: Эта функциональность не поддерживается всеми платформами, поэтому поведение этой опции зависит от реализации (будет ли она проигнорирована или нет). Однако, если она не поддерживается, то getReuseAddress() всегда вернёт false.

При создании сокета DatagramSocket начальное значение SO_REUSEADDR отключено.

Поведение при включении или отключении SO_REUSEADDR после привязки сокета (см. isBound()) не определено.

Параметры:
on - включить или отключить опцию
Исключения:
SocketException - если произошла ошибка при включении или отключении опции сокета SO_RESUEADDR, или сокет закрыт.
С момента:
1.4
См. также:
getReuseAddress(), bind(SocketAddress), isBound(), isClosed()

getReuseAddress

public boolean getReuseAddress()
                        throws SocketException

Проверяет, включена ли опция SO_REUSEADDR.

Возвращает:
значение boolean, указывающее, включена ли опция SO_REUSEADDR.
Исключения:
SocketException - если произошла ошибка в базовом протоколе, например, ошибка UDP.
С момента:
1.4
См. также:
setReuseAddress(boolean)

setBroadcast

public void setBroadcast(boolean on)
                  throws SocketException

Включить/выключить SO_BROADCAST.

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

Параметры:
on - требуется ли включить широковещательный режим.
Исключения:
SocketException - если произошла ошибка в базовом протоколе, например, ошибка UDP.
С момента:
1.4
См. также:
getBroadcast()

getBroadcast

public boolean getBroadcast()
                     throws SocketException

Проверяет, включена ли опция SO_BROADCAST.

Возвращает:
значение boolean, указывающее, включена ли опция SO_BROADCAST.
Исключения:
SocketException - если произошла ошибка в базовом протоколе, например, ошибка UDP.
С момента:
1.4
См. также:
setBroadcast(boolean)

setTrafficClass

public void setTrafficClass(int tc)
                     throws SocketException

Устанавливает класс трафика или октет типа обслуживания в заголовке IP-датаграммы для датаграмм, отправляемых из этого DatagramSocket. Поскольку базовая реализация сети может игнорировать это значение, приложения должны рассматривать его как подсказку.

Значение tc должно находиться в диапазоне 0 <= tc <= 255, в противном случае будет выброшено исключение IllegalArgumentException.

Примечания:

Для протокола IPv4 значение состоит из integer, наименее значащие 8 битов которого представляют значение октета TOS в IP-пакетах, отправляемых сокетом. RFC 1349 определяет значения TOS следующим образом:

  • IPTOS_LOWCOST (0x02)
  • IPTOS_RELIABILITY (0x04)
  • IPTOS_THROUGHPUT (0x08)
  • IPTOS_LOWDELAY (0x10)
Последний младший бит всегда игнорируется, так как это соответствует биту MBZ (должен быть ноль).

Установка битов в поле приоритета может привести к SocketException, указывающему, что операция запрещена.

для протокола IPv6 tc - это значение, которое будет помещено в поле sin6_flowinfo заголовка IP.

Параметры:
tc - значение int для набора битов.
Исключения:
SocketException - если произошла ошибка при установке класса трафика или типа обслуживания
С момента:
1.4
См. также:
getTrafficClass()

getTrafficClass

public int getTrafficClass()
                    throws SocketException

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

Поскольку базовая реализация сети может игнорировать класс трафика или тип обслуживания, установленный с помощью setTrafficClass(int), этот метод может вернуть другое значение, чем то, которое было ранее установлено с помощью метода setTrafficClass(int) для этого DatagramSocket.

Возвращает:
установленный класс трафика или тип обслуживания
Исключения:
SocketException - если произошла ошибка при получении значения класса трафика или типа обслуживания.
С момента:
1.4
См. также:
setTrafficClass(int)

close

public void close()

Закрывает этот сокет датаграмм.

Любой поток, заблокированный в receive(java.net.DatagramPacket) на этом сокете, выбросит SocketException.

Если у этого сокета есть связанный канал, то канал также закрывается.

Определено в:
close в интерфейсе Closeable
Определено в:
close в интерфейсе AutoCloseable

isClosed

public boolean isClosed()

Возвращает, закрыт ли сокет.

Возвращает:
true, если сокет закрыт
С момента:
1.4

getChannel

public DatagramChannel getChannel()

Возвращает уникальный объект DatagramChannel, связанный с этим сокетом датаграмм, если таковой имеется.

У сокета датаграмм будет канал только в том случае, если сам канал был создан с помощью метода DatagramChannel.open.

Возвращает:
канал датаграмм, связанный с этим сокетом датаграмм, или null если этот сокет не был создан для канала
С момента:
1.4

setDatagramSocketImplFactory

public static void setDatagramSocketImplFactory(DatagramSocketImplFactory fac)
                                         throws IOException

Устанавливает фабрику реализации сокета датаграмм для приложения. Фабрика может быть установлена только один раз.

Когда приложение создаёт новый сокет датаграмм, вызывается метод фабрики реализации сокета createDatagramSocketImpl для создания фактической реализации сокета датаграмм.

Передача null в метод является пустой операцией, если фабрика не была уже установлена.

Если существует менеджер безопасности, этот метод сначала вызовет метод менеджера безопасности checkSetFactory для проверки разрешения на операцию. Это может привести к SecurityException.

Параметры:
fac - желаемая фабрика.
Исключения:
IOException - если при установке фабрики сокета датаграмм произошла ошибка ввода-вывода.
SocketException - если фабрика уже определена.
SecurityException - если менеджер безопасности существует и его метод checkSetFactory не разрешает операцию.
С момента:
1.3
См. также:
DatagramSocketImplFactory.createDatagramSocketImpl(), SecurityManager.checkSetFactory()

© 1993, 2020, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API