- java.lang.Object
-
- javax.net.SocketFactory
-
- 已知直接子类:
-
SSLSocketFactory
public abstract class SocketFactory extends Object
这个类创建套接字。 它可以由其他工厂子类化,这些工厂创建特定的套接字子类,从而为添加公共套接字级功能提供通用框架。套接字工厂是捕获与正在构造的套接字相关的各种策略的简单方法,以一种不需要特殊配置代码的方式生成这样的套接字,这些代码要求套接字:
- 由于工厂和套接字的多态性,相同的应用程序代码可以使用不同类型的套接字,只需传递不同类型的工厂即可。
- 工厂本身可以使用插座构造中使用的参数进行定制。 因此,例如,可以定制工厂以返回具有不同网络超时或已配置的安全参数的套接字。
- 返回给应用程序的套接字可以是java.net.Socket的子类,因此它们可以直接公开新API,以获取压缩,安全性,记录标记,统计信息收集或防火墙隧道等功能。
工厂类由特定于环境的配置机制指定。 例如, getDefault方法可以返回适合特定用户或applet的工厂,框架可以使用根据自己的目的定制的工厂。
- 从以下版本开始:
- 1.4
- 另请参见:
-
ServerSocketFactory
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
SocketFactory()
创建一个SocketFactory
。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 Socket
createSocket()
创建一个未连接的套接字。abstract Socket
createSocket(String host, int port)
创建套接字并将其连接到指定远程端口上的指定远程主机。abstract Socket
createSocket(String host, int port, InetAddress localHost, int localPort)
创建套接字并将其连接到指定远程端口上的指定远程主机。abstract Socket
createSocket(InetAddress host, int port)
创建套接字并将其连接到指定地址处的指定端口号。abstract Socket
createSocket(InetAddress address, int port, InetAddress localAddress, int localPort)
创建套接字并将其连接到指定远程端口上的指定远程地址。static SocketFactory
getDefault()
返回环境的默认套接字工厂的副本。
-
-
-
方法详细信息
-
getDefault
public static SocketFactory getDefault()
返回环境的默认套接字工厂的副本。- 结果
-
默认值
SocketFactory
-
createSocket
public Socket createSocket() throws IOException
创建一个未连接的套接字。- 结果
- 未连接的套接字
- 异常
-
IOException
- 如果无法创建套接字 - 另请参见:
-
Socket.connect(java.net.SocketAddress)
,Socket.connect(java.net.SocketAddress, int)
,Socket()
-
createSocket
public abstract Socket createSocket(String host, int port) throws IOException, UnknownHostException
创建套接字并将其连接到指定远程端口上的指定远程主机。 使用为此工厂建立的套接字选项配置此套接字。如果有安全管理器,则使用主机地址和
port
作为其参数调用其checkConnect
方法。 这可能会导致SecurityException。- 参数
-
host
- 要连接的服务器主机名,或null
作为环回地址。 -
port
- 服务器端口 - 结果
-
Socket
- 异常
-
IOException
- 如果在创建套接字时发生I / O错误 -
SecurityException
- 如果存在安全管理器且其checkConnect
方法不允许该操作。 -
UnknownHostException
- 如果主机未知 -
IllegalArgumentException
- 如果port参数超出指定的有效端口值范围,则介于0和65535之间(包括0和65535)。 - 另请参见:
-
SecurityManager.checkConnect(java.lang.String, int)
,Socket(String, int)
-
createSocket
public abstract Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException, UnknownHostException
创建套接字并将其连接到指定远程端口上的指定远程主机。 套接字也将绑定到提供的本地地址和端口。 使用为此工厂建立的套接字选项配置此套接字。如果有安全管理器,则使用主机地址和
port
作为其参数调用其checkConnect
方法。 这可能会导致SecurityException。- 参数
-
host
- 要连接的服务器主机名,或null
作为环回地址。 -
port
- 服务器端口 -
localHost
- 套接字绑定的本地地址 -
localPort
- 套接字绑定的本地端口 - 结果
-
Socket
- 异常
-
IOException
- 如果在创建套接字时发生I / O错误 -
SecurityException
- 如果存在安全管理器且其checkConnect
方法不允许该操作。 -
UnknownHostException
- 如果主机未知 -
IllegalArgumentException
- 如果port参数或localPort参数超出指定的有效端口值范围(0到65535之间,包括0和65535)。 - 另请参见:
-
SecurityManager.checkConnect(java.lang.String, int)
,Socket(String, int, java.net.InetAddress, int)
-
createSocket
public abstract Socket createSocket(InetAddress host, int port) throws IOException
创建套接字并将其连接到指定地址处的指定端口号。 使用为此工厂建立的套接字选项配置此套接字。如果有安全管理器,则使用主机地址和
port
作为其参数调用其checkConnect
方法。 这可能会导致SecurityException。- 参数
-
host
- 服务器主机 -
port
- 服务器端口 - 结果
-
Socket
- 异常
-
IOException
- 如果在创建套接字时发生I / O错误 -
SecurityException
- 如果存在安全管理器且其checkConnect
方法不允许该操作。 -
IllegalArgumentException
- 如果port参数超出指定的有效端口值范围,则介于0和65535之间(包括0和65535)。 -
NullPointerException
- 如果host
为空。 - 另请参见:
-
SecurityManager.checkConnect(java.lang.String, int)
,Socket(java.net.InetAddress, int)
-
createSocket
public abstract Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException
创建套接字并将其连接到指定远程端口上的指定远程地址。 套接字也将绑定到本地地址和端口。 使用为此工厂建立的套接字选项配置套接字。如果有安全管理器,则使用主机地址和
port
作为其参数调用其checkConnect
方法。 这可能会导致SecurityException。- 参数
-
address
- 服务器网络地址 -
port
- 服务器端口 -
localAddress
- 客户端网络地址 -
localPort
- 客户端端口 - 结果
-
Socket
- 异常
-
IOException
- 如果在创建套接字时发生I / O错误 -
SecurityException
- 如果存在安全管理器且其checkConnect
方法不允许该操作。 -
IllegalArgumentException
- 如果port参数或localPort参数超出指定的有效端口值范围(0到65535之间,包括0和65535)。 -
NullPointerException
- 如果address
为空。 - 另请参见:
-
SecurityManager.checkConnect(java.lang.String, int)
,Socket(java.net.InetAddress, int, java.net.InetAddress, int)
-
-