gpt4 book ai didi

java - 在 JavaFX 桌面应用程序中获取远程 IP 地址

转载 作者:行者123 更新时间:2023-12-01 12:07:06 25 4
gpt4 key购买 nike

我需要在 JavaFX 桌面应用程序中获取用户的远程 IP 地址。我正在使用 Spring 来处理诸如身份验证之类的事情(我的程序使用数据库连接)。我确实知道如何在使用 Java Servlet 时从 http 请求获取 IP 地址,问题是我的应用程序中没有。我考虑过使用某种检查 IP 的网站,并简单地将 html 内容解析为字符串,但我必须在本地/独立于任何外部源完成所有操作。

感谢任何形式的帮助,提前致谢

编辑:一些可能有帮助的附加信息:我没有使用套接字,我的应用程序应该由最终用户使用,并且它唯一拥有的连接是与 MySQL 数据库的连接,它从中获取一些内容。我需要在登录时检索用户的 IP 地址,将所述 IP 地址与端口一起放入数据库中的特定表中。

最佳答案

正如评论中所建议的,执行此操作的唯一方法是查询外部源。您可以相当轻松地编写一些代码来执行此操作,例如

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;


public class RealIPScraper {
private static final String URL_STRING = "http://www.realip.info/api/p/realip.php" ;

private static final Pattern pattern = Pattern.compile("\\{\"IP\":\"(?<ip>.*)\"\\}");

public static String getIP() throws IOException {
URL url = new URL(URL_STRING);
try (BufferedReader in = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()))) {
String content = String.join("\n", in.lines().collect(Collectors.toList()));
Matcher matcher = pattern.matcher(content);
if (matcher.matches()) {
return matcher.group("ip");
} else {
return "No ip found";
}
}
}

}

关于java - 在 JavaFX 桌面应用程序中获取远程 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27514309/

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