java.net
一些核心方法调用路径
这里以 PlainSocketImpl 和 PlainDatagramSocketImpl 为例子
Socket
- Socket(String host, int port)
- PlainSocketImpl.native void socketCreate
- connect(SocketAddress endpoint)
- PlainSocketImpl.native void socketConnect
- getOutputStream()
- SocketOutputStream.native void socketWrite0
- SocketOutputStream.native static void init
- getInputStream()
- SocketInputStream.native static void init
- SocketInputStream.native int socketRead0
ServerSocket
- ServerSocket(int port, int backlog, InetAddress bindAddr)
- PlainSocketImpl.native void socketCreate
- PlainSocketImpl.native void socketBind
- PlainSocketImpl.native void socketListen
- accept()
- PlainSocketImpl.native void socketAccept
DatagramSocket
- DatagramSocket(int port, InetAddress laddr)
- PlainDatagramSocketImpl.native void datagramSocketCreate
- PlainDatagramSocketImpl.synchronized native void bind0
- receive(DatagramPacket p)
- PlainDatagramSocketImpl.synchronized native int peekData
- PlainDatagramSocketImpl.synchronized native int peek
- PlainDatagramSocketImpl.synchronized native void receive0
- PlainDatagramSocketImpl.native int dataAvailable
- send(DatagramPacket p)
- PlainDatagramSocketImpl.synchronized native void bind0
- PlainDatagramSocketImpl.native void send
core
@startuml
interface Closeable
interface ContentHandlerFactory
interface CookiePolicy
interface CookieStore
interface DatagramSocketImplFactory
interface FileNameMap
interface InetAddressImpl #PaleGreen
interface ProtocolFamily
interface SocketImplFactory
interface SocketOption
interface SocketOptions
interface SocksConsts #PaleGreen
enum StandardProtocolFamily
abstract class AbstractPlainDatagramSocketImpl #PaleGreen
abstract class AbstractPlainSocketImpl #PaleGreen
abstract class Authenticator
abstract class CacheRequest
abstract class CacheResponse
abstract class ContentHandler
abstract class CookieHandler
abstract class DatagramSocketImpl
abstract class JarURLConnection
abstract class ProxySelector
abstract class ResponseCache
abstract class SecureCacheResponse
abstract class SocketAddress
abstract class SocketImpl
abstract class URLConnection
class DatagramPacket << (F,red) >>
class HttpCookie << (F,red) >>
class IDN << (F,red) >>
class Inet4Address << (F,red) >>
class Inet6Address << (F,red) >>
class NetPermission << (F,red) >>
class NetworkInterface << (F,red) >>
class PasswordAuthentication << (F,red) >>
class SocketPermission << (F,red) >>
class StandardSocketOptions << (F,red) >>
class DefaultDatagramSocketImplFactory #PaleGreen
class DefaultInterface #PaleGreen
class HostPortrange #PaleGreen
class HttpConnectSocketImpl #PaleGreen
class Inet4AddressImpl #PaleGreen
class Inet6AddressImpl #PaleGreen
class InetAddressContainer #PaleGreen
class InMemoryCookieStore #PaleGreen
class PlainDatagramSocketImpl #PaleGreen
class PlainSocketImpl #PaleGreen
class SdpSocketImpl #PaleGreen
class SocketInputStream #PaleGreen
class SocketOutputStream #PaleGreen
class SocketSecrets #PaleGreen
class SocksSocketImpl #PaleGreen
class InterfaceAddress
class Proxy
Closeable <|.. ServerSocket
Closeable <|.. Socket
Closeable <|.. DatagramSocket
DatagramSocket <|-- MulticastSocket
CookieStore <|.. InMemoryCookieStore
InetAddress <|-- Inet4Address
InetAddress <|-- Inet6Address
InetAddressImpl <|-- Inet4AddressImpl
InetAddressImpl <|-- Inet6AddressImpl
ProtocolFamily <|.. StandardProtocolFamily
CacheResponse <|-- SecureCacheResponse
CookieHandler <|-- CookieManager
URLConnection <|-- HttpURLConnection
URLConnection <|-- JarURLConnection
SocketAddress <|-- InetSocketAddress
SocketOptions <|.. DatagramSocketImpl
DatagramSocketImpl <|-- AbstractPlainDatagramSocketImpl
AbstractPlainDatagramSocketImpl <|-- PlainDatagramSocketImpl
SocketOptions <|.. SocketImpl
SocketImpl <|-- AbstractPlainSocketImpl
AbstractPlainSocketImpl <|-- PlainSocketImpl
PlainSocketImpl <|-- HttpConnectSocketImpl
PlainSocketImpl <|-- SdpSocketImpl
SocksConsts <|.. SocksSocketImpl
PlainSocketImpl <|-- SocksSocketImpl
@enduml
ur*
@startuml
interface URLStreamHandlerFactory
abstract class URLConnection
abstract class URLStreamHandler
class URI << (F,red) >>
class URL << (F,red) >>
class URLClassLoader
class URLDecoder
class URLEncoder
class URLPermission << (F,red) >>
@enduml
exception
@startuml
class HttPretryException
class MalformedURLException
class PasswordAuthentication << (F,red) >>
class ProtocolException
class SocketTimeoutException
class UnknownHostException
class UnknownServiceException
SocketException <|-- BindException
SocketException <|-- ConnectException
SocketException <|-- NoRouteToHostException
SocketException <|-- PortUnreachableException
@enduml