gpt4 book ai didi

java - 如何从 LPRT ftp 命令获取 IPv6

转载 作者:行者123 更新时间:2023-12-01 11:26:52 28 4
gpt4 key购买 nike

我正在创建一个 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 地址。

public static void main(String[] args) {
StringTokenizer st = new StringTokenizer(
"6,16,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,193,160");

final String portStr = st.nextToken();
final int lastDelimIdx =portStr.lastIndexOf(',', portStr.lastIndexOf(',') - 1);
final StringTokenizer portst = new StringTokenizer(portStr.substring(lastDelimIdx + 1, portStr.length()), ",");
final int p1 = Integer.parseInt(portst.nextToken());
final int p2 = Integer.parseInt(portst.nextToken());
final int dataPort = (p1 << 8) | p2;
System.out.println(dataPort);
}

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

最佳答案

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

关于java - 如何从 LPRT ftp 命令获取 IPv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30753791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com