# SDP 的技术问题

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

*   IPv4 and IPv6 incompatibility

    Internet 协议版本 4（IPv4）长期以来一直是用于通过 Internet 传送数据的 Internet 协议（IP）的行业标准版本。 Internet 协议版本 6（IPv6）是下一代 Internet 层协议。今天两种版本的 IP 都在使用。

    IPv4 地址长度为 32 位，以十进制格式写入，并以句点分隔。 IPv6 地址长度为 128 位，以十六进制格式写入，并以冒号分隔。 IPv4 地址不能像在 IPv6 中那样使用，但 IPv6 确实支持一类特殊的地址：IPv4 映射地址。在 IPv4 映射地址中，前 80 位设置为零，接下来的 16 位设置为 1，后 32 位表示 IPv4 地址。

    例如，以下是以两种格式表示的相同 IP 地址：

    ```
    IPv4 address                  IPv4-mapped address (for use in IPv6)
    192.0.2.1                   ::ffff:192.0.2.1

    ```

    默认情况下，如果在任何 IB 适配器上启用了 IPv6，则 Java 平台将使用 IPv6。但是，IPv4 映射地址当前在 Solaris OS 或 Linux 下不可用。因此，如果要在 JDK 7 下使用 IPv4 地址格式，则必须指定`java.net.preferIPv4Stack`属性，如下例所示：

    ```
    % java -Dcom.sun.sdp.conf=sdp.conf -Djava.net.preferIPv4Stack=true  MyApplication

    ```

*   Bugs

    早期的 InfiniBand 实现中发现了一些错误。 Solaris 10 10/09 发行版中修复了这些错误。确保您至少使用此版本。