获取Java WD中客户端计算机的本地主机

获取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

我在门户内部网中创建了一个java webdynpro。 需要本地机器的localhost,但我只能获取servername、serverlocalhost和本地机器ip地址

当我在本地java程序上运行以下代码时,我得到: 工作站:BEWSP IP:10.10.19.112

当我在SAP Portal程序上运行以下代码时,我得到: 工作站:SAPDEP IP:10.10.19.112

我需要在我的SAP门户应用程序中获得BEWSP,有没有这样做的想法

           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地址,请这样说。