类 java.net.Socket
java.lang.Object
|
+----java.net.Socket
- public class Socket
- extends Object
该类实现客户机 socket (也可以只称为 “socket”) 。 一个 socket 是两
台机器通信的端点。
socket 的实际工作是由一个 SocketImpl 的类实例执行的 。 一个应用通过改变
生成 socket 实现的 socket 工厂,可以配置自己以生成适合本地防火墙的
socket 。
- 来自:
- JDK1.0
- 参见:
- setSocketImplFactory, SocketImpl
构造子索引
- Socket()
- 根据 SocketImpl 的系统默认值生成一个没有连接的 socket 。
- Socket(InetAddress, int)
-
生成一个 socket 流并且把它连接到指定IP 地址的指定端口。
- Socket(InetAddress, int, boolean)
- 生成一个 socket 并且把它连接到指定IP 地址的指定端口。
不推荐使用该方法。
- Socket(InetAddress, int, InetAddress, int)
-
生成一个 socket 并且把它连接到指定远程端口的指定远程地址。
- Socket(SocketImpl)
- 根据用户指定的 SocketImpl 生成一个无连接的 Socket 。
- Socket(String, int)
-
生成一个 socket 流并且把它连接到命名主机的指定端口。
- Socket(String, int, boolean)
- 生成一个 socket 流并且把它连接到命名主机的指定端口。
不推荐使用该方法。
- Socket(String, int, InetAddress, int)
-
生成一个 socket 并且把它连接到在指定远程主机的指定远程端口。
方法索引
- close()
- 关闭该 socket 。
- getInetAddress()
- 返回 socket 连接的地址。
- getInputStream()
- 返回 socket 的输入流。
- getLocalAddress()
- 获取该 socket 绑定的本地地址。
- getLocalPort()
- 返回该 socket 绑定的本机端口。
- getOutputStream()
- 返回 socket 的输出流。
- getPort()
- 返回 socket 连接的远程端口。
- getSoLinger()
- 返回 SO_LINGER 的设置。
- getSoTimeout()
- 返回 SO_TIMEOUT 的设置。
- getTcpNoDelay()
- 测试 TCP_NODELAY 是否是允许的。
- setSocketImplFactory(SocketImplFactory)
- 为应用程序设置客户机 socket 实现工厂。
- setSoLinger(boolean, int)
- 用指定的等候时间设置/禁止 SO_LINGER 。
- setSoTimeout(int)
- 以毫秒为单位,设置或取消 SO_TIMEOUT 的指定的超时。
- setTcpNoDelay(boolean)
- 设置或取消 TCP_NODELAY (设置或取消 Nagle's algorithm) 。
- toString()
- 把该 socket 转换成
String.
构造子
Socket
protected Socket()
- 根据 SocketImpl 的系统默认值生成一个没有连接的 socket 。
Socket
protected Socket(SocketImpl impl) throws SocketException
- 根据用户指定的 SocketImpl 生成一个无连接的 Socket 。
参数 impl 是子类希望用在 Socket 上的 SocketImpl 实例。
Socket
public Socket(String host,
int port) throws UnknownHostException, IOException
- 生成一个 socket 流并且把它连接到命名主机的指定端口。
如果应用程序已指定了服务器 socket 工厂,则该工厂的 createSocketImpl 方法将被调用来生成实际的
socket 应用。 否则将生成一个 “无格式” socket 。
- 参数:
- host -主机名 。
- port - 端口号码 。
- 抛出:
IOException
- 如果生成 socket 的时侯发生一 I/O 错误 。
- 参见:
- setSocketImplFactory, SocketImpl, createSocketImpl
Socket
public Socket(InetAddress address,
int port) throws IOException
- 生成一个 socket 流并且把它连接到指定IP 地址的指定端口。
如果应用程序已指定了 socket 工厂,则该工厂的 createSocketImpl 方法将被调用来生成实际的
socket 应用。 否则将生成一个“无格式” socket 。
- 参数:
- address - IP 地址 。
- port - 端口号码 。
- 抛出:
IOException
- 如果生成 socket 的时侯发生一 I/O 错误 。
- 参见:
- setSocketImplFactory, SocketImpl, createSocketImpl
Socket
public Socket(String host,
int port,
InetAddress localAddr,
int localPort) throws IOException
- 生成一个 socket 并且把它连接到指定远程主机的指定远程端口上。
该 Socket 将捆绑到所提供的本地地址和端口上。
- 参数:
- host - 远程主的名称 。
- port - 远程端口 。
- localAddr - 该 socket 的本地地址 。
- localPort - 该 socket 的本机端口 。
Socket
public Socket(InetAddress address,
int port,
InetAddress localAddr,
int localPort) throws IOException
- 生成一个 socket 并且把它连接到指定远程端口的指定远程地址。 该
Socket 将捆绑到所提供的本地地址和端口上。
- 参数:
- address - 远程地址
- port - 远程端口
- localAddr - 该 socket 的本地地址 。
- localPort - 该 socket 的本机端口 。
Socket
public Socket(String host,
int port,
boolean stream) throws IOException
- 注意:不推荐使用 Suskto 方法。
使用 DatagramSocket 对 UDP 传送 。
- 生成一个 socket 流并且把它连接到命名主机的指定端口。
如果参数流是 true ,将生成一个 socket 流 。
如果参数流是 false ,将生成一个 socket 数据报文 。
如果应用程序已指定了服务器 socket 工厂,则该工厂的 createSocketImpl 方法将被调用来生成实际的
socket 应用。 否则一个将生成一个“无格式” socket 。
- 参数:
- host -主机名 。
- port - 端口号码 。
- stream - 一个
boolean 指示是一个 socket 流还是一个 socket 数据报文 。
- 抛出:
IOException
- 如果生成 socket 的时侯发生一 I/O 错误 。
- 参见:
- setSocketImplFactory, SocketImpl, createSocketImpl
Socket
public Socket(InetAddress host,
int port,
boolean stream) throws IOException
- 注意:不推荐使用 Suskto 方法。
使用 DatagramSocket 对 UDP 传送 。
- 生成一个 socket 并且把它连接到指定IP 地址的指定端口。
如果参数流是 true ,将生成一个 socket 流 。
如果参数流是 false ,将生成一个 socket 数据报文 。
如果应用程序已指定了服务器 socket 工厂,则该工厂的 createSocketImpl 方法将被调用来生成实际的
socket 应用。 否则见生成一个“无格式” socket 。
- 参数:
- address - IP 地址 。
- port - 端口号码 。
- stream - 如果是
true ,生成一个 socket 流 ;否则生成一个 socket 数据报文 。
- 抛出:
IOException
- 如果生成 socket 的时侯发生一 I/O 错误 。
- 参见:
- setSocketImplFactory, SocketImpl, createSocketImpl
方法
getInetAddress
public InetAddress getInetAddress()
- 返回 socket 连接的地址。
- 返回:
- socket 连接的远程IP 地址 。
getLocalAddress
public InetAddress getLocalAddress()
- 获取该 socket 绑定的本地地址。
getPort
public int getPort()
- 返回 socket 连接的远程端口。
- 返回:
- socket 连接的远程端口号。
getLocalPort
public int getLocalPort()
- 返回该 socket 绑定的本机端口。
- 返回:
- socket 连接的本机端口号。
getInputStream
public InputStream getInputStream() throws IOException
- 返回 socket 的输入流 。
- 返回:
- 从该 socket 以字节读取的输入流 。
- 抛出:
IOException
- 如果在生成输入流的时侯发生一 I/O 错误。
getOutputStream
public OutputStream getOutputStream() throws IOException
- 返回 socket 的输出流 。
- 返回:
- 以字节写入到该 socket 输出流 。
- 抛出:
IOException
- 如果在生成输出流的时侯发生一 I/O 错误。
setTcpNoDelay
public void setTcpNoDelay(boolean on) throws SocketException
- 设置或取消 TCP_NODELAY (设置或取消 Nagle 的算法) 。
getTcpNoDelay
public boolean getTcpNoDelay() throws SocketException
- 测试 TCP_NODELAY 是否是允许的 。
setSoLinger
public void setSoLinger(boolean on,
int val) throws SocketException
- 用指定的等候时间设置/禁止 SO_LINGER 。
getSoLinger
public int getSoLinger() throws SocketException
- 返回 SO_LINGER 的设置 。 返回为 -1 表示该选择项是屏蔽的 。
setSoTimeout
public synchronized void setSoTimeout(int timeout) throws SocketException
- 以毫秒为单位,设置或取消 SO_TIMEOUT 的指定的超时。 用该选择项设置一个非零的超时 ,对 有关 Socket 的输入流调用 read() ,按块记录将仅持续设定的时间。 如果超时得以验证 ,java.io.InterruptedIOException 将被启动 ,即使 Socket 仍有效。 选择项 must 被设置成可以加入封锁操作。 超时必须是
> 0 。
取值为零的超时被解释为无穷大的超时。
getSoTimeout
public synchronized int getSoTimeout() throws SocketException
- 返回 SO_TIMEOUT 的设置 。 返回为 0 表示该选择项是屏蔽的 (如: 超时为无穷大)。
close
public synchronized void close() throws IOException
- 关闭该 socket 。
- 抛出:
IOException
- 如果在关闭 socket 的时侯发生一 I/O 错误。
toString
public String toString()
- 转换该 socket 成一个
String.
- 返回:
- 该 socket 的字符串表示 。
- 覆盖:
- 类 Object 中的 toString
setSocketImplFactory
public static synchronized void setSocketImplFactory(SocketImplFactory fac) throws IOException
- 对应用程序设置客户机实现 socket 的执行工厂。 该工厂只能指定一次。
如果应用程序生成一个新的客户机 socket ,则该 socket 实现工厂的 createSocketImpl 方法将被调用来生成实际的
socket 应用。
- 参数:
- fac - 期望的工厂。
- 抛出:
IOException
- 如果在设置 socket 工厂的时侯发生一个 I/O错误 。
- 抛出:SocketException
- 如果工厂已定义 。
- 参见:
- createSocketImpl