获取Java WD中客户端计算机的本地主机
我在门户内部网中创建了一个java webdynpro。 需要本地机器的localhost,但我只能获取servername、serverlocalhost和本地机器ip地址 当我在本地java程序上运行以下代码时,我得到: 工作站:BEWSP IP:10.10.19.112 当我在SAP Portal程序上运行以下代码时,我得到: 工作站:SAPDEP IP:10.10.19.112 我需要在我的SAP门户应用程序中获得BEWSP,有没有这样做的想法获取Java WD中客户端计算机的本地主机,java,localhost,sap,portal,webdynpro,Java,Localhost,Sap,Portal,Webdynpro,我在门户内部网中创建了一个java webdynpro。 需要本地机器的localhost,但我只能获取servername、serverlocalhost和本地机器ip地址 当我在本地java程序上运行以下代码时,我得到: 工作站:BEWSP IP:10.10.19.112 当我在SAP Portal程序上运行以下代码时,我得到: 工作站:SAPDEP IP:10.10.19.112 我需要在我的SAP门户应用程序中获得BEWSP,有没有这样做的想法 InetAddres
InetAddress ip = InetAddress.getLocalHost();
String workstation = "";
String currentip = "";
//Workstation
System.out.println("Workstation : " + ip.getHostName());
workstation = "" + ip.getHostName();
//Ip address
System.out.println("Current IP address : " + ip.getHostAddress());
currentip = "" + ip.getHostAddress();
KR仅添加OP选择的方式的实现:
import java.util.regex.Pattern;
import java.io.*;
public class nslookup
{
public static void main(String[] args)
{
try {
Process p = Runtime.getRuntime().exec("cmd /c nslookup 192.168.0.1");
BufferedReader bi = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
line = bi.readLine();
while ( line != null ) {
if ( line.indexOf("Non-existent") != -1 ) {
System.out.println("The host/domain doesn't exist");
break;
}
if (line.matches("Server:\\s+.+$")) {
Matcher matcher = Pattern.compile("(Server:\\s+)([a-z0-9\\-]+[\\.]{1}[a-z0-9\\-]+([\\.]{1}[a-z0-9\\-]+)?([\\.]{1}[a-z0-9\\-]+)?)").matcher(line);
if (matcher.find()) {
String result = matcher.group(2);
System.out.println(result);
System.exit(42);
}
}
line = bi.readLine();
}
bi.close();
} catch (IOException ioe) {
ioe.printStackTrace(); }
}
}
只需添加OP选择的方式的实现:
import java.util.regex.Pattern;
import java.io.*;
public class nslookup
{
public static void main(String[] args)
{
try {
Process p = Runtime.getRuntime().exec("cmd /c nslookup 192.168.0.1");
BufferedReader bi = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
line = bi.readLine();
while ( line != null ) {
if ( line.indexOf("Non-existent") != -1 ) {
System.out.println("The host/domain doesn't exist");
break;
}
if (line.matches("Server:\\s+.+$")) {
Matcher matcher = Pattern.compile("(Server:\\s+)([a-z0-9\\-]+[\\.]{1}[a-z0-9\\-]+([\\.]{1}[a-z0-9\\-]+)?([\\.]{1}[a-z0-9\\-]+)?)").matcher(line);
if (matcher.find()) {
String result = matcher.group(2);
System.out.println(result);
System.exit(42);
}
}
line = bi.readLine();
}
bi.close();
} catch (IOException ioe) {
ioe.printStackTrace(); }
}
}
我不打算将此列为答案,因为我只需要在Web Dynpro ABAP端处理这个问题。但是,我要说的可能会有所帮助。我们无法简单地在WDA中实现这一点。在发布7.03/7.31和引入HTML孤岛之前,我们使用本地机器IP并进行DNS查找以获取主机名。在HTML孤岛之后,我们能够接触本地机器,但是为了获得机器名,我们必须构建一个web服务,然后在目标机器上运行,以将该信息返回到应用程序。希望这至少能为你指明一个有用的方向。谢谢你的回答。我通过在java代码中执行CMD命令(nslookup)解决了我的问题,并选择了带有机器名称的精确行。在获得适当的行之后,a使用正则表达式过滤结果,以获得工作站名称。“本地计算机的本地主机”无意义。本地计算机总是
localhost
或127.0.0.1
。如果你指的是它的公共DNS名称或IP地址,请这样说。我不打算将此列为答案,因为我只需要在Web Dynpro ABAP端处理这个问题。但是,我要说的可能会有所帮助。我们无法简单地在WDA中实现这一点。在发布7.03/7.31和引入HTML孤岛之前,我们使用本地机器IP并进行DNS查找以获取主机名。在HTML孤岛之后,我们能够接触本地机器,但是为了获得机器名,我们必须构建一个web服务,然后在目标机器上运行,以将该信息返回到应用程序。希望这至少能为你指明一个有用的方向。谢谢你的回答。我通过在java代码中执行CMD命令(nslookup)解决了我的问题,并选择了带有机器名称的精确行。在获得适当的行之后,a使用正则表达式过滤结果,以获得工作站名称。“本地计算机的本地主机”无意义。本地计算机总是localhost
或127.0.0.1
。如果您是指它的公共DNS名称或IP地址,请这样说。