# 支持的 Java API

> 原文： [https://docs.oracle.com/javase/tutorial/sdp/sockets/supported.html](https://docs.oracle.com/javase/tutorial/sdp/sockets/supported.html)

所有使用 TCP 的 API 都可以使用 SDP，具体包括以下类：

*   `java.net`包
    *   `Socket`
    *   `ServerSocket`
*   `java.nio.channels`包装：
    *   `SocketChannel`
    *   `ServerSocketChannel`
    *   `AsynchronousSocketChannel`
    *   `AsynchronousServerSocketChannel`

启用 S​​DP 支持后，只需对代码进行任何更改即可。编译是没有必要的。但是，重要的是要知道套接字只绑定一次。连接是隐式绑定。因此，如果套接字先前未被绑定并且`connect`被调用，则绑定发生在那时。

例如，请考虑以下代码段：

```
AsynchronousSocketChannel ch = AsynchronousSocketChannel.open();
ch.bind(local);
Future<Void> result = ch.connect(remote);

```

在此代码段中，当在套接字上调用`bind`时，异步套接字通道绑定到本地 TCP 地址。然后，代码尝试使用相同的套接字连接到远程地址。如果远程地址使用 InfiniBand（如配置文件中所指定），则连接将不会转换为 SDP，因为套接字先前已绑定。