Класс SocketImpl
- Все реализуемые интерфейсы:
SocketOptions
public abstract class SocketImpl extends Object implements SocketOptions
SocketImpl является общим суперклассом для всех классов, которые фактически реализуют сокеты. Он используется для создания сокетов как для клиента, так и для сервера.- Замечание по реализации:
- Сокеты клиента и сервера, созданные с использованием публичных конструкторов
SocketиSocketServer, создают системныйSocketImpl. В JDK исторически использовался тип реализацииSocketImplпод названием "PlainSocketImpl", который с тех пор был заменён на новую реализацию. JDK продолжает поставляться со старой реализацией, чтобы разрешить работу кода, зависящего от неопределённого поведения, которое отличается между старой и новой реализациями. Старая реализация будет использоваться, если виртуальная машина Java запускается с системной переменнойjdk.net.usePlainSocketImpl, установленной для использования старой реализации. Она также может быть установлена в конфигурационном файле сети JDK, расположенном в${java.home}/conf/net.properties. Значение свойства представляет собой строковое представление булевого значения. Если она задана без значения, то по умолчанию она равнаtrue, следовательно, запуск с-Djdk.net.usePlainSocketImplили-Djdk.net.usePlainSocketImpl=trueнастроит виртуальную машину Java на использование старой реализации. Свойство и старая реализация будут удалены в будущей версии. - С момента:
- 1.0
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected InetAddress |
address |
IP-адрес удалённого конца этого сокета. |
protected FileDescriptor |
fd |
Объект дескриптора файла для этого сокета. |
protected int |
localport |
Локальный номер порта, к которому подключён этот сокет. |
protected int |
port |
Номер порта на удалённом хосте, к которому подключён этот сокет. |
Поля, объявленные в интерфейсе 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
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SocketImpl() |
Инициализировать новый экземпляр этого класса |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected abstract void |
accept |
Принимает подключение. |
protected abstract int |
available() |
Возвращает количество байтов, которые можно прочитать из этого сокета без блокировки. |
protected abstract void |
bind |
Привязывает этот сокет к указанному локальному IP-адресу и номеру порта. |
protected abstract void |
close() |
Закрывает этот сокет. |
protected abstract void |
connect |
Подключает этот сокет к указанному порту на указанном хосте. |
protected abstract void |
connect |
Подключает этот сокет к указанному номеру порта на указанном хосте. |
protected abstract void |
connect |
Подключает этот сокет к указанному номеру порта на указанном хосте. |
protected abstract void |
create |
Создаёт сокет потока или датаграммы. |
protected FileDescriptor |
getFileDescriptor() |
Возвращает значение поля fd этого сокета. |
protected InetAddress |
getInetAddress() |
Возвращает значение поля address этого сокета. |
protected abstract InputStream |
getInputStream() |
Возвращает поток ввода для этого сокета. |
protected int |
getLocalPort() |
Возвращает значение поля localport этого сокета. |
protected <T> T |
getOption |
Вызывается для получения параметра сокета. |
protected abstract OutputStream |
getOutputStream() |
Возвращает поток вывода для этого сокета. |
protected int |
getPort() |
Возвращает значение поля port этого сокета. |
protected abstract void |
listen |
Устанавливает максимальную длину очереди для входящих указаний на подключение (запрос на подключение) к аргументу count. |
protected abstract void |
sendUrgentData |
Отправляет один байт данных экстренной информации по сокету. |
protected <T> void |
setOption |
Вызывается для установки параметра сокета. |
protected void |
setPerformancePreferences |
Устанавливает предпочтения производительности для этого сокета. |
protected void |
shutdownInput() |
Размещает поток ввода для этого сокета в "конец потока". |
protected void |
shutdownOutput() |
Отключает поток вывода для этого сокета. |
protected Set<SocketOption<?>> |
supportedOptions() |
Возвращает набор SocketOptions, поддерживаемых этим impl и сокетом этого impl (Socket или ServerSocket). |
protected boolean |
supportsUrgentData() |
Возвращает, поддерживает ли этот SocketImpl отправку данных экстренной информации. |
String |
toString() |
Возвращает адрес и порт этого сокета в виде String. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.net.SocketOptions
getOption, setOption
Подробное описание полей
fd
protected FileDescriptor fd
address
protected InetAddress address
port
protected int port
localport
protected int localport
Подробное описание конструкторов
SocketImpl
public SocketImpl()
Подробное описание методов
create
protected abstract void create(boolean stream) throws IOException
- Параметры:
-
stream- еслиtrue, создаёт сокет потока; в противном случае, создаёт сокет дейтаграммы. - Исключения:
-
IOException- если при создании сокета произошла ошибка ввода-вывода.
connect
protected abstract void connect(String host, int port) throws IOException
- Параметры:
-
host- имя удалённого хоста. -
port- номер порта. - Исключения:
-
IOException- если при подключении к удалённому хосту произошла ошибка ввода-вывода.
connect
protected abstract void connect(InetAddress address, int port) throws IOException
- Параметры:
-
address- IP-адрес удалённого хоста. -
port- номер порта. - Исключения:
-
IOException- если при попытке подключения произошла ошибка ввода-вывода.
connect
protected abstract void connect(SocketAddress address, int timeout) throws IOException
- Параметры:
-
address- Адрес сокета удалённого хоста. -
timeout- значение таймаута в миллисекундах или ноль для отсутствия таймаута. - Исключения:
-
IOException- если при попытке подключения произошла ошибка ввода-вывода. - С:
- 1.4
bind
protected abstract void bind(InetAddress host, int port) throws IOException
- Параметры:
-
host- IP-адрес, принадлежащий локальному интерфейсу. -
port- номер порта. - Исключения:
-
IOException- если при связывании сокета произошла ошибка ввода-вывода.
listen
protected abstract void listen(int backlog) throws IOException
count. Если индикация соединения поступает, когда очередь полная, соединение отклоняется.- Параметры:
-
backlog- максимальная длина очереди. - Исключения:
-
IOException- если при создании очереди произошла ошибка ввода-вывода.
accept
protected abstract void accept(SocketImpl s) throws IOException
- Параметры:
-
s- принятое подключение. - Исключения:
-
IOException- если при принятии подключения произошла ошибка ввода-вывода.
getInputStream
protected abstract InputStream getInputStream() throws IOException
- Возвращает:
- поток для чтения из этого сокета.
- Исключения:
-
IOException- если при создании потока ввода произошла ошибка ввода-вывода.
getOutputStream
protected abstract OutputStream getOutputStream() throws IOException
- Возвращает:
- поток вывода для записи в этот сокет.
- Исключения:
-
IOException- если при создании потока вывода произошла ошибка ввода-вывода.
available
protected abstract int available() throws IOException
- Возвращает:
- количество байтов, которые можно прочитать из этого сокета без блокировки.
- Исключения:
-
IOException- если при определении количества доступных байтов произошла ошибка ввода-вывода.
close
protected abstract void close() throws IOException
- Исключения:
-
IOException- если при закрытии этого сокета произошла ошибка ввода-вывода.
shutdownInput
protected void shutdownInput() throws IOException
available вернёт 0, а его методы read вернут -1 (конец потока).- Исключения:
-
IOException- если при завершении работы этого сокета произошла ошибка ввода-вывода. - С:
- 1.3
- См. также:
shutdownOutput
protected void shutdownOutput() throws IOException
- Исключения:
-
IOException- если при завершении работы этого сокета произошла ошибка ввода-вывода. - С:
- 1.3
- См. также:
getFileDescriptor
protected FileDescriptor getFileDescriptor()
fd этого сокета.- Возвращает:
- значение поля
fdэтого сокета. - См. также:
getInetAddress
protected InetAddress getInetAddress()
address этого сокета.- Возвращает:
- значение поля
addressэтого сокета. - См. также:
getPort
protected int getPort()
port этого сокета.- Возвращает:
- значение поля
portэтого сокета. - См. также:
supportsUrgentData
protected boolean supportsUrgentData()
- Возвращает:
- true, если поддержка данных с высоким приоритетом
- С:
- 1.4
- См. также:
sendUrgentData
protected abstract void sendUrgentData(int data) throws IOException
- Параметры:
-
data- Байты данных для отправки - Исключения:
-
IOException- если при отправке данных произошла ошибка. - С:
- 1.4
getLocalPort
protected int getLocalPort()
localport этого сокета.- Возвращает:
- значение поля
localportэтого сокета. - См. также:
toString
public String toString()
String. - Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этого сокета.
setPerformancePreferences
protected void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
Сокеты по умолчанию используют протокол TCP/IP. Некоторые реализации могут предлагать альтернативные протоколы, которые имеют разные характеристики производительности по сравнению с TCP/IP. Этот метод позволяет приложению выразить свои предпочтения относительно того, как следует учитывать эти компромиссы, когда реализация выбирает протокол из доступных.
Предпочтения производительности описываются тремя целыми числами, значения которых указывают на относительную важность короткого времени соединения, низкой задержки и высокой пропускной способности. Абсолютные значения целых чисел не имеют значения; для выбора протокола значения просто сравниваются, причем большие значения указывают на более сильные предпочтения. Отрицательные значения означают более низкий приоритет, чем положительные. Например, если приложение предпочитает короткое время соединения перед низкой задержкой и высокой пропускной способностью, то оно может вызвать этот метод со значениями (1, 0, 0). Если приложение предпочитает высокую пропускную способность перед низкой задержкой, а низкую задержку перед коротким временем соединения, то оно может вызвать этот метод со значениями (0, 1, 2). По умолчанию этот метод ничего не делает, если он не переопределен в подклассе.
- Параметры:
-
connectionTime- Целое число, выражающее относительную важность короткого времени соединения -
latency- Целое число, выражающее относительную важность низкой задержки -
bandwidth- Целое число, выражающее относительную важность высокой пропускной способности - С:
- 1.5
setOption
protected <T> void setOption(SocketOption<T> name, T value) throws IOException
- Требования к реализации:
- Реализация по умолчанию этого метода сначала проверяет, что данный параметр сокета
nameне равен null, а затем выбрасываетUnsupportedOperationException. Подклассы должны переопределить этот метод соответствующей реализацией. - Параметры типа:
-
T- Тип значения параметра сокета - Параметры:
-
name- Параметр сокета -
value- Значение параметра сокета. Значениеnullможет быть допустимым для некоторых параметров. - Исключения:
-
UnsupportedOperationException- если SocketImpl не поддерживает параметр -
IllegalArgumentException- если значение не является допустимым для параметра -
IOException- если происходит ошибка ввода-вывода или сокет закрыт -
NullPointerException- если имяnull - С:
- 9
getOption
protected <T> T getOption(SocketOption<T> name) throws IOException
- Требования к реализации:
- Реализация по умолчанию этого метода сначала проверяет, что данный параметр сокета
nameне равен null, а затем выбрасываетUnsupportedOperationException. Подклассы должны переопределить этот метод соответствующей реализацией. - Параметры типа:
-
T- Тип значения параметра сокета - Параметры:
-
name- Параметр сокета - Возвращает:
- значение указанного параметра
- Исключения:
-
UnsupportedOperationException- если SocketImpl не поддерживает параметр -
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/SocketImpl.html