类 java.net.ServerSocket
java.lang.Object
|
+----java.net.ServerSocket
- public class ServerSocket
- extends Object
该类实现服务器 socket。一个服务器 socket 等待从网络上来的请求。
它执行某些基于请求的操作,然后可能返回一个结果给请求者。
服务器 socket 的实际工作是由一个 SocketImpl 类的实例执行的。 一个应用可以改变生成 socket 的 socket 工厂,用以配置自己以生成适合本地防火墙的 socket 。
- 来自:
- JDK1.0
- 参见:
- SocketImpl, setSocketFactory
构造子索引
- ServerSocket(int)
- 在指定的端口生成一个服务器 socket 。
- ServerSocket(int, int)
- 生成一个服务器 socket , 并且把它捆绑到指定的本地端口。
- ServerSocket(int, int, InetAddress)
-
在指定的端口生成一个服务程序,监听要完成的服务和要绑定的 IP 地址。
方法索引
- accept()
- 监听与本 socket 的连接并且接受它。
- close()
- 关闭该 socket 。
- getInetAddress()
- 返回服务器 socket 的本地地址。
- getLocalPort()
- 返回该 socket 正收听的端口 。
- getSoTimeout()
- 提取 SO_TIMEOUT 的设置。
- implAccept(Socket)
- ServerSocket 类的子类使用该方法来覆盖 accept(),以返回它们自己 socket 的子类。
- setSocketFactory(SocketImplFactory)
- 为应用程序设置服务器 socket 的实现工厂。
- setSoTimeout(int)
- 以毫秒为单位,设置或取消 SO_TIMEOUT 的指定的超时。
- toString()
- 以
String 的形式返回该 socket 的执行地址和执行端口 。
构造子
ServerSocket
public ServerSocket(int port) throws IOException
- 在指定的端口生成一个服务器 socket 。
0 号端口指在任何空闲端口上生成 socket 。
到来的连接指示(连接的请求) 的最大队列长度设置为 50 。
若连接请求到达时队列已满,则拒绝连接。
如果应用程序已指定了服务器 socket 工厂,则该工厂的 createSocketImpl 方法将被调用来生成实际的
socket 应用。 否则将生成一个“无格式”socket。
- 参数:
- port - 端口号码 ,或者为
0 来使用任何释放的端口。
- 抛出:
IOException
- 如果发生 I/O 错误 ,则打开该 socket 。
- 参见:
- SocketImpl, createSocketImpl, setSocketFactory
ServerSocket
public ServerSocket(int port,
int backlog) throws IOException
- 生成一个服务器 socket, 并且把它捆绑到指定的本地端口。
0 号端口在任何释放的端口上生成一个 socket 。
到来的连接指示(连接的请求) 的最大队列长度设置为参数
count 。 若连接请求到达时队列已满,则拒绝连接。
如果应用程序已指定了服务器 socket 工厂,则该工厂的 createSocketImpl 方法将被调用来生成实际的
socket 应用。 否则将生成一个“无格式”socket。
- 参数:
- port -指定端口号码 ,或者为
0 来使用任何释放的端口 。
- backlog - 队列的最大的长度 。
- 抛出:
IOException
- 如果发生 I/O 错误 ,则打开该 socket 。
- 参见:
- SocketImpl, createSocketImpl, setSocketFactory
ServerSocket
public ServerSocket(int port,
int backlog,
InetAddress bindAddr) throws IOException
- 在指定的端口生成一个服务程序,监听要完成的服务和要绑定的本地IP 地址。 参数 bindAddr 可以用在多主机的 ServerSocket 上,这些 ServerSocket 将只接受到它一个地址的连接请求。 如果 bindAddr 为 null ,它将缺省地接受对任何/所有本地地址的连接 。端口号必须为 0 和 65535 之间的一个。
- 参数:
- port - 本地的 TCP 端口
- backlog - 监听的待办事项
- bindAddr - 本地的服务器将捆绑到的 InetAddress 地址
- 参见:
- SocketConstants, SocketOption, SocketImpl, 1
方法
getInetAddress
public InetAddress getInetAddress()
- 返回服务器 socket 的本地地址。
- 返回:
- socket 连接的地址 ,若 socket 尚未连接则为
null。
getLocalPort
public int getLocalPort()
- 返回该 socket 正收听的端口 。
- 返回:
- 该 socket 正监听的端口号 。
accept
public Socket accept() throws IOException
- 监听与本 socket 的连接并且接受它 。
该方法一直阻塞直到连接成功 。
- 抛出:
IOException
- 如果在等待连接的时侯发生一 I/O 错误 。
implAccept
protected final void implAccept(Socket s) throws IOException
- ServerSocket 类的子类使用该方法覆盖 accept(),以返回它们自己
socket 的子类。 于是一个 FooServerSocket
通常给该方法传递一个空 FooSocket()。 在
implAccept 返回时,FooSocket 将被连接到一个客户机上。
close
public void close() throws IOException
- 关闭该 socket 。
- 抛出:
IOException
- 如果关闭 socket 的时侯发生一 I/O 错误。
setSoTimeout
public synchronized void setSoTimeout(int timeout) throws SocketException
- 以毫秒为单位,设置或取消 SO_TIMEOUT 的指定的超时。 使用非零的超时选择项对 ServerSocket 调用 accept() 方法,该调用在这段设定的时间内阻塞。
如果超时得以验证 ,java.io.InterruptedIOException 将被启动 ,即使 ServerSocket 仍有效。 选择项 must 被设置成可以加入封锁操作。 超时必须是
> 0 。
取值为零的超时被解释为无穷大的超时。
getSoTimeout
public synchronized int getSoTimeout() throws IOException
- 提取 SO_TIMEOUT 的设置。 返回为 0 表示该选择项是屏蔽的 (如: 超时为无穷大)。
toString
public String toString()
- 以
String 的形式返回该 socket 的执行地址和执行端口 。
- 返回:
- 该 socket 的字符串表示 。
- 覆盖:
- 类 Object 中的 toString
setSocketFactory
public static synchronized void setSocketFactory(SocketImplFactory fac) throws IOException
- 对应用程序设置服务器 socket 执行工厂。 该工厂只能指定一次。
如果应用程序生成一个新的服务器 socket ,则该 socket 应用工厂的 createSocketImpl 方法将被调用来生成实际的
socket 应用。
- 参数:
- fac - 期望的工厂
- 抛出:
IOException
- 如果在设置 socket 工厂的时侯发生一个 I/O错误 。
- 抛出:SocketException
- 如果工厂已被定义 。
- 参见:
- createSocketImpl