похоже, что все, что он делает - это делегирует вызов java.net.SocketImpl.connect (SocketaAddress, int).
, который является абстрактным методом класса SocketImpl
.
Подкласс, фактически реализующий его (системное значение по умолчанию SocketImpl
, неявно полученное из SocketImplFactory.createSocketImpl()
в конструкторе Socket
), в свою очередь, опирается на собственный метод, поэтому невозможно узнать неточность в независящей от платформы платформе. способ.
- РЕДАКТИРОВАТЬ (ответ на комментарий)
Если не использовать подкласс Socket
, который задает пользовательский SocketImpl
через защищенный конструктор Socket(SocketImpl impl)
, стандартный экземпляр Socket
, созданный конструктором Socket()
, использует SocksSocketImpl
(который, в свою очередь, расширяет PlainSocketImpl
).
SocksSocketImpl.connect(SocketAddress address, int timeout)
называет
super.connect(SocketAddress address, int timeout)
(PlainSocketImpl.connect(SocketAddress address, int timeout)
),
который в свою очередь вызывает
PlainSocketImpl.connectToAddress(InetAddress address, int port, int timeout)
который в свою очередь вызывает
PlainSocketImpl.doConnect(InetAddress address, int port, int timeout)
который в свою очередь вызывает
PlainSocketImpl.socketConnect(InetAddress address, int port, int timeout)
, который является частным нативным методом, и мы не знаем, что внутри:)
Так что нет, мы не полагаемся на Object.wait
.
-
См. http://jcs.mobile -utopia.com / jcs / 18846_PlainSocketImpl.java и http://jcs.mobile -utopia.com / jcs / 31401_SocksSocketImpl.java для исходного кода