похоже, что все, что он делает, это делегировать вызов java.net.SocketImpl.connect (SocketaAddress, int).
который является абстрактным методом класса SocketImpl
.
Подкласс на самом деле его реализации (система по умолчанию SocketImpl
неявно извлекается из SocketImplFactory.createSocketImpl()
в Socket
конструктора), в свою очередь, опирается на собственный метод, так что это не возможно знать неточность в платформо-независимым способом.
- EDIT (ответ на комментарий)
Если не используется 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)
,
, который является частным родной метод, и мы не знаем, что внутри :)
Так нет, мы» re не полагаясь на Object.wait
.
-
См http://jcs.mobile-utopia.com/jcs/18846_PlainSocketImpl.java и http://jcs.mobile-utopia.com/jcs/31401_SocksSocketImpl.java для исходного кода
Я не мог просматривать источник после SocketImpl. У вас есть исходный код реализации? – Pacerier
Я полностью отредактировал свой оригинальный ответ в ответ на ваш комментарий. Пожалуйста, посмотрите –