服务器套接字的实际工作由 SocketImpl
类的实例执行。应用程序可以更改创建套接字实现的套接字工厂来配置它自身,从而创建适合本地防火墙的套接字。
version | 1.90, 03/27/06 |
since | JDK1.0 |
See also | java.net.SocketImpl, setSocketFactory(java.net.SocketImplFactory), java.nio.channels.ServerSocketChannel |
Constructors | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public | ServerSocket() throws IOException
| ||||||||||||||||||||
public | ServerSocket(int port) throws IOException
0 在所有空闲端口上创建套接字。 传入连接指示(对连接的请求)的最大队列长度被设置为 如果应用程序已指定服务器套接字工厂,则调用该工厂的 如果存在安全管理器,则首先使用
| ||||||||||||||||||||
public | ServerSocket(int port, int backlog) throws IOException
0 在所有空闲端口上创建套接字。 传入连接指示(对连接的请求)的最大队列长度被设置为 如果应用程序已指定服务器套接字工厂,则调用该工厂的 如果存在安全管理器,则首先使用
| ||||||||||||||||||||
public | ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException
如果存在安全管理器,则此方法使用
|
Methods | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public Socket | accept() throws IOException
创建新套接字
| ||||||||||||||||||||||
public void | bind(SocketAddress endpoint) throws IOException
ServerSocket 绑定到特定地址(IP 地址和端口号)。 如果地址为
| ||||||||||||||||||||||
public void | bind(SocketAddress endpoint, int backlog) throws IOException
ServerSocket 绑定到特定地址(IP 地址和端口号)。 如果地址为
| ||||||||||||||||||||||
public void | close() throws IOException
#accept() 中所有当前阻塞的线程都将会抛出 SocketException 。 如果此套接字有一个与之关联的通道,则关闭该通道。
| ||||||||||||||||||||||
final protected void | implAccept(Socket s) throws IOException
| ||||||||||||||||||||||
public String | toString()
String 返回此套接字的实现地址和实现端口。
|
Properties | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public boolean | isBound()
| |||||||||||||||
public ServerSocketChannel | getChannel()
java.nio.channels.ServerSocketChannel 对象(如果有)。 当且仅当通过
| |||||||||||||||
public boolean | isClosed()
| |||||||||||||||
public InetAddress | getInetAddress()
| |||||||||||||||
public int | getLocalPort()
| |||||||||||||||
public SocketAddress | getLocalSocketAddress()
null 。
| |||||||||||||||
public void | setPerformancePreferences(int connectionTime, int latency, int bandwidth)
默认情况下套接字使用 TCP/IP 协议。有些实现可能提供与 TCP/IP 具有不同性能特征的替代协议。此方法允许应用程序在实现从可用协议中作出选择时表明它自己关于应该如何进行折衷的首选项。 性能首选项由三个整数描述,它们的值分别指示短连接时间、低延迟和高带宽的相对重要性。这些整数的绝对值没有意义;为了选择协议,需要简单地比较它们的值,较大的值指示更强的首选项。例如,如果应用程序相对于低延迟和高带宽更希望短连接时间,则其可以使用值 (1, 0, 0) 调用此方法。如果应用程序相对于低延迟更希望高带宽,且相对于短连接时间更希望低延迟,则其可以使用值 (0, 1, 2) 调用此方法。 在绑定套接字后调用此方法无效。这意味着,需要利用无参数构造方法创建套接字才能使用此功能。
| |||||||||||||||
public void | setReceiveBufferSize(int size) throws SocketException
#accept() 返回套接字后通过调用 Socket#getReceiveBufferSize() 确定。 SO_RCVBUF 的值用于设置内部套接字接收缓冲区的大小和设置公布到远程同位体的 TCP 接收窗口的大小。 随后可以通过调用 未能执行此操作不会导致错误,缓冲区大小可能被设置为所请求的值,但是从此 ServerSocket 中接受的套接字中的 TCP 接收窗口将不再大于 64K 字节。
| |||||||||||||||
public int | getReceiveBufferSize() throws SocketException
注意,在接受的套接字中实际设置的值通过调用
| |||||||||||||||
public void | setReuseAddress(boolean on) throws SocketException
关闭 TCP 连接时,该连接可能在关闭后的一段时间内保持超时状态(通常称为 TIME_WAIT 状态或 2MSL 等待状态)。对于使用已知套接字地址或端口的应用程序而言,如果存在处于超时状态的连接(包括地址和端口),可能不能将套接字绑定到所需的 SocketAddress。 在使用 当创建 ServerSocket 时,SO_REUSEADDR 的初始设置是不确定的。应用程序可以使用 在绑定套接字(请参阅
| |||||||||||||||
public boolean | getReuseAddress() throws SocketException
| |||||||||||||||
public static void | setSocketFactory(SocketImplFactory fac) throws IOException
当应用程序创建新的服务器套接字时,调用套接字实现工厂的 除非已经设置了工厂,否则向该方法传递 如果有安全管理器,则此方法首先调用安全管理器的
| |||||||||||||||
public void | setSoTimeout(int timeout) throws SocketException
| |||||||||||||||
public int | getSoTimeout() throws IOException
|