如何从LPRT ftp命令获取IPv6

时间:2015-06-10 10:32:02

标签: java ftp

我正在创建一个FTP服务器。根据FTP规范,他们添加了一个名为LPRT的新命令。

其格式为LPRT 6,16,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,193,160

现在我可以使用下面的逻辑从中获取FTP端口。但是我也需要IPV6地址。

@Column

有人可以帮我从这个字符串中找到IPv6地址。

2 个答案:

答案 0 :(得分:1)

LPRT和LPSV被认为已过时,请参阅https://www.iana.org/assignments/ftp-commands-extensions/ftp-commands-extensions.txt。要使用IPv6,请使用RFC2428中指定的EPSV和EPRT。

如果您仍然需要知道如何处理LPRT,请查看过时的RFC1639。例如:

LPRT 6,16,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,193,160

表示主机长度参数后面的16个数字是地址的字节,然后是2个字节的端口地址长度,即

[0000:0000:0000:0000:0300:0000:0000:0000]:49568

答案 1 :(得分:0)

我创建了一个执行此提取的程序

    public static String longToIP(long[] ip) {
    String ipString = "";

    int flag = 0;
    for (long crtLong : ip) {

        if (flag == 2) {
            ipString = ipString + ":";
            flag = 0;
        }
        String s = Long.toHexString(crtLong & 0xFFFFFFFFL);
        if (s.length() == 1) {
            s = "0" + s;
        }
        ipString = ipString + "" + s;
        flag++;

    }
    return ipString;

}

输入= {0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0}

OutPut = {0000:0000:0000:0000:0300:0000:0000:0000}