# 创建 SDP 配置文件

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

SDP 配置文件是一个文本文件，您可以决定该文件将驻留在文件系统的哪个位置。配置文件中的每一行都是注释或规则。注释由行开头的哈希字符（＃）表示，哈希字符后面的所有内容都将被忽略。

有两种类型的规则，如下所示：

*   “绑定”规则表示当 TCP 套接字绑定到与规则匹配的地址和端口时，应使用 SDP 协议传输。
*   “连接”规则表示当未绑定的 TCP 套接字尝试连接到与规则匹配的地址和端口时，应使用 SDP 协议传输。

规则具有以下形式：

```
("bind"|"connect")1*LWSP-char(hostname|ipaddress)["/"prefix])1*LWSP-char("*"|port)["-"("*"|port)]

```

* * *

**Decoding the notation:** 

_1 * LWSP-char_ 表示任意数量的线性空白字符（制表符或空格）都可以分隔标记。方括号表示可选文本。符号（ _xxx_ | _yyy_ ）表示令牌将包括 _xxx_ 或 _yyy_ ，但不包括两者。带引号的字符表示文字文本。

* * *

第一个关键字表示规则是**绑定**还是**连接**规则。下一个标记指定主机名或文字 IP 地址。指定文字 IP 地址时，还可以指定前缀，该前缀表示 IP 地址范围。第三个和最后一个令牌是端口号或端口号范围。

请考虑此示例配置文件中的以下表示法：

```
# Use SDP when binding to 192.0.2.1
bind 192.0.2.1 *

# Use SDP when connecting to all application services on 192.0.2.*
connect 192.0.2.0/24     1024-*

# Use SDP when connecting to the http server or a database on examplecluster
connect examplecluster.example.com   80
connect examplecluster.example.com   3306

```

示例文件中的第一条规则指定 SDP 用于本地 IP 地址`192.0.2.1`上的任何端口（*）。您将为分配给 InfiniBand 适配器的每个本地地址添加绑定规则。 （ _InfiniBand 适配器 _ 相当于 InfiniBand 的网络接口卡（NIC）。）如果您有多个 IB 适配器，则可以为分配给这些适配器的每个地址使用绑定规则。

示例文件中的第二条规则指定每当连接到`192.0.2.*`且目标端口为 1024 或更大时，都会使用 SDP。 IP 地址`/24`上的前缀表示 32 位 IP 地址的前 24 位应与指定的地址匹配。 IP 地址的每个部分使用 8 位，因此 24 位表示 IP 地址应与`192.0.2`匹配，最后一个字节可以是任何值。端口令牌上的`-*`表示法指定“及以上”。一系列端口（例如 1024-2056）也是有效的，并且包括指定范围的端点。

示例文件中的最终规则指定主机名（`examplecluster`），首先将端口分配给 http 服务器（80），然后将端口分配给数据库（3306）。与文字 IP 地址不同，主机名可以转换为多个地址。指定主机名时，它将匹配主机名在名称服务中注册的所有地址。