所有类


java.net
类 Socket

java.lang.Object
  继承者 java.net.Socket
直接已知子类:
SSLSocket

public class Socket
   
   
   
   
   
extends Object

此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器之间的通信端点。

套接字的实际工作由 SocketImpl 类的实例执行。应用程序通过更改创建套接字实现的套接字工厂可以配置它自身,以创建适合本地防火墙的套接字。

从以下版本开始:
JDK1.0
另请参见:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketChannel

构造方法摘要
  Socket()
          通过系统默认类型的 SocketImpl 创建未连接套接字
  Socket(InetAddress address, int port)
          创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
  Socket(InetAddress host, int port, boolean stream)
          已过时。 Use DatagramSocket instead for UDP transport.
  Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
          创建一个套接字并将其连接到指定远程端口上的指定远程地址。
  Socket(Proxy proxy)
          根据不管其他设置如何都应使用的指定代理类型(如果有),创建一个未连接的套接字。
protected Socket(SocketImpl impl)
          创建带有用户指定的 SocketImpl 的未连接 Socket。
  Socket(String host, int port)
          创建一个流套接字并将其连接到指定主机上的指定端口号。
  Socket(String host, int port, boolean stream)
          已过时。 使用 DatagramSocket 取代 UDP 传输。
  Socket(String host, int port, InetAddress localAddr, int localPort)
          创建一个套接字并将其连接到指定远程主机上的指定远程端口。
 
方法摘要
 void bind(SocketAddress bindpoint)
          将套接字绑定到本地地址。
 void close()
          关闭此套接字。
 void connect(SocketAddress endpoint)
          将此套接字连接到服务器。
 void connect(SocketAddress endpoint, int timeout)
          将此套接字连接到具有指定超时值的服务器。
 SocketChannel getChannel()
          返回与此数据报套接字关联的惟一 SocketChannel 对象(如果有)。
 InetAddress getInetAddress()
          返回套接字连接的地址。
 InputStream getInputStream()
          返回此套接字的输入流。
 boolean getKeepAlive()
          测试是否启用 SO_KEEPALIVE。
 InetAddress getLocalAddress()
          获取套接字绑定的本地地址。
 int getLocalPort()
          返回此套接字绑定到的本地端口。
 SocketAddress getLocalSocketAddress()
          返回此套接字绑定的端点的地址,如果尚未绑定则返回 null
 boolean getOOBInline()
          测试是否启用 OOBINLINE。
 OutputStream getOutputStream()
          返回此套接字的输出流。
 int getPort()
          返回此套接字连接到的远程端口。
 int getReceiveBufferSize()
          获取此 Socket 的 SO_RCVBUF 选项的值,该值是平台在 Socket 上输入时使用的缓冲区大小。
 SocketAddress getRemoteSocketAddress()
          返回此套接字连接的端点的地址,如果未连接则返回 null
 boolean getReuseAddress()
          测试是否启用 SO_REUSEADDR。
 int getSendBufferSize()
          获取此 Socket 的 SO_SNDBUF 选项的值,该值是平台在 Socket 上输出时使用的缓冲区大小。
 int getSoLinger()
          返回 SO_LINGER 的设置。
 int getSoTimeout()
          返回 SO_TIMEOUT 的设置。
 boolean getTcpNoDelay()
          测试是否启用 TCP_NODELAY。
 int getTrafficClass()
          为从此 Socket 上发送的包获取 IP 头中的流量类别或服务类型。
 boolean isBound()
          返回套接字的绑定状态。
 boolean isClosed()
          返回套接字的关闭状态。
 boolean isConnected()
          返回套接字的连接状态。
 boolean isInputShutdown()
          返回是否关闭套接字连接的半读状态 (read-half)。
 boolean isOutputShutdown()
          返回是否关闭套接字连接的半写状态 (write-half)。
 void sendUrgentData(int data)
          在套接字上发送一个紧急数据字节。
 void setKeepAlive(boolean on)
          启用/禁用 SO_KEEPALIVE。
 void setOOBInline(boolean on)
          启用/禁用 OOBINLINE(TCP 紧急数据的接收者) 默认情况下,此选项是禁用的,即在套接字上接收的 TCP 紧急数据被悄悄丢弃。
 void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
          设置此套接字的性能偏好。
 void setReceiveBufferSize(int size)
          将此 Socket 的 SO_RCVBUF 选项设置为指定的值。
 void setReuseAddress(boolean on)
          启用/禁用 SO_REUSEADDR 套接字选项。
 void setSendBufferSize(int size)
          将此 Socket 的 SO_SNDBUF 选项设置为指定的值。
static void setSocketImplFactory(SocketImplFactory fac)
          为应用程序设置客户端套接字实现工厂。
 void setSoLinger(boolean on, int linger)
          启用/禁用具有指定逗留时间(以秒为单位)的 SO_LINGER。
 void setSoTimeout(int timeout)
          启用/禁用带有指定超时值的 SO_TIMEOUT,以毫秒为单位。
 void setTcpNoDelay(boolean on)
          启用/禁用 TCP_NODELAY(启用/禁用 Nagle 算法)。
 void setTrafficClass(int tc)
          为从此 Socket 上发送的数据包在 IP 头中设置流量类别 (traffic class) 或服务类型八位组 (type-of-service octet)。
 void shutdownInput()
          此套接字的输入流置于“流的末尾”。
 void shutdownOutput()
          禁用此套接字的输出流。
 String toString()
          将此套接字转换为 String
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

Socket

public Socket()
通过系统默认类型的 SocketImpl 创建未连接套接字

从以下版本开始:
JDK1.1

Socket

public Socket(Proxy proxy)
根据不管其他设置如何都应使用的指定代理类型(如果有),创建一个未连接的套接字。

如果有安全管理器,则使用代理主机地址和端口号作为参数调用其 checkConnect 方法。这可能会导致 SecurityException 异常。

示例:

  • Socket s = new Socket(Proxy.NO_PROXY); 将创建忽略任何其他代理配置的普通套接字。
  • Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("socks.mydom.com", 1080))); 将创建通过指定的 SOCKS 代理服务器进行连接的套接字。

参数:
proxy - 指定应使用的代理种类的 Proxy 对象。
抛出:
IllegalArgumentException - 如果代理的类型无效或者为 null
SecurityException - 如果存在安全管理器,但拒绝连接到代理的权限。
从以下版本开始:
1.5
另请参见:
ProxySelector, Proxy

Socket

protected Socket(SocketImpl impl)
          throws SocketException
创建带有用户指定的 SocketImpl 的未连接 Socket。

参数:
impl - 子类希望在 Socket 上使用的 SocketImpl 的实例。
抛出:
SocketException - 如果底层协议出现错误,例如 TCP 错误。
从以下版本开始:
JDK1.1

Socket

public Socket(String host,
              int port)
       throws UnknownHostException,
              IOException
创建一个流套接字并将其连接到指定主机上的指定端口号。

如果指定的主机为 null,则等效于指定与 InetAddress.getByName(null) 相同的地址。换句话话,等效于指定回送接口的地址。

如果应用程序已指定服务器套接字工厂,则调用该工厂的 createSocketImpl 方法来创建实际套接字实现。否则创建“普通”套接字。

如果有安全管理器,则使用主机地址和 port 作为参数调用其 checkConnect 方法。这可能会导致 SecurityException 异常。

参数:
host - 主机名,或者为 null,表示回送地址。
port - 端口号。
抛出:
UnknownHostException - 如果无法确定主机的 IP 地址。
IOException - 如果创建套接字时发生 I/O 错误。
SecurityException - 如果安全管理器存在并且其 checkConnect 方法不允许进行该操作。
另请参见:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketImplFactory.createSocketImpl(), SecurityManager.checkConnect(java.lang.String, int)

Socket

public Socket(InetAddress address,
              int port)
       throws IOException
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。

如果应用程序已指定套接字工厂,则调用该工厂的 createSocketImpl 方法来创建实际套接字实现。否则创建“普通”套接字。

如果有安全管理器,则使用主机地址和 port 作为参数调用其 checkConnect 方法。这可能会导致 SecurityException 异常。

参数:
address - IP 地址。
port - 端口号。
抛出:
IOException - 如果创建套接字时发生 I/O 错误。
SecurityException - 如果安全管理器存在并且其 checkConnect 方法不允许进行该操作。
另请参见:
setSocketImplFactory(java.net.SocketImplFactory), SocketImpl, SocketImplFactory.createSocketImpl(), SecurityManager.checkConnect(java.lang.String, int)

Socket

public Socket(String host,
              int port,
              InetAddress localAddr,
              int localPort)
       throws IOException
创建一个套接字并将其连接到指定远程主机上的指定远程端口。Socket 还会 bind() 到提供的本地地址和端口。

如果指定的主机为 null,则等效于指定与 InetAddress.getByName(null) 相同的地址。换句话话,等效于指定回送接口的地址。

如果有安全管理器,则使用主机地址和 port 作为参数调用其 checkConnect 方法。这可能会导致 SecurityException 异常。

参数:
host - 远程主机名,或者为 null,表示回送地址。
port - 远程端口
localAddr - 要将套接字绑定到的本地地址
localPort - 要将套接字绑定到的本地端口
抛出:
IOException - 如果在创建套接字时发生 I/O 错误。
SecurityException - 如果安全管理器存在并且其 checkConnect 方法不允许进行该操作。
从以下版本开始:
JDK1.1
另请参见:
SecurityManager.checkConnect(java.lang.String, int)

Socket

public Socket(InetAddress address,
              int port,
              InetAddress localAddr,
              int localPort)
       throws IOException
创建一个套接字并将其连接到指定远程端口上的指定远程地址。Socket 还会 bind() 到提供的本地地址和端口。

如果有安全管理器,则使用主机地址和 port 作为参数调用其 checkConnect 方法。这可能会导致 SecurityException 异常。

参数:
address - 远程地址
port - 远程端口
localAddr - 要将套接字绑定到的本地地址
localPort - 要将套接字绑定到的本地端口
抛出:
IOException - 如果在创建套接字时发生 I/O 错误。
SecurityException - 如果安全管理器存在并且其 checkConnect 方法不允许进行该操作。
从以下版本开始:
JDK1.1
另请参见:
SecurityManager.checkConnect(java.lang.String, int)

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部