Класс 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() Возвращает уникальный объект |
InetAddress |
getInetAddress() Возвращает адрес, к которому подключён этот сокет. |
InetAddress |
getLocalAddress() Получает локальный адрес, к которому привязан сокет. |
int |
getLocalPort() Возвращает номер порта на локальном хосте, к которому привязан этот сокет. |
SocketAddress |
getLocalSocketAddress() Возвращает адрес конечной точки, к которой привязан этот сокет. |
int |
getPort() Возвращает номер порта, к которому подключён этот сокет. |
int |
getReceiveBufferSize() Получает значение параметра SO_RCVBUF для этого |
SocketAddress |
getRemoteSocketAddress() Возвращает адрес конечной точки, к которой подключён этот сокет, или |
boolean |
getReuseAddress() Проверяет, включен ли SO_REUSEADDR. |
int |
getSendBufferSize() Получает значение параметра SO_SNDBUF для этого |
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 в указанное значение для этого |
void |
setReuseAddress(boolean on) Включает/отключает параметр сокета SO_REUSEADDR. |
void |
setSendBufferSize(int size) Устанавливает параметр SO_SNDBUF в указанное значение для этого |
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)
Установка битов в поле приоритета может привести к 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.