|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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)