0

虽然 Azure Connect 即将退役,并且 Azure 虚拟网络以更快的速度提供了类似的功能,但我注意到了一些缺点。

使用 Azure Connect netbios 远程共享/计算机连接以及名称解析都可以完美运行。使用 Windows Azure 虚拟网络,名称解析将需要 DNS,否则将无法正常工作。如果至少有某种带有 IP 的已连接客户端列表,我本可以幸存下来,这是不可用的,并且在每次重新连接时分配了不同的 IP。因此,在事先不知道他们当前 IP 的情况下,不可能有 2 个客户端相互连接。

不过,最大的问题是无论如何(我可以 ping 并访问远程计算机的任何端口)netbios 似乎都不起作用。

当我对 IP 进行跟踪时,我可以看到计算机名称。但它不接受带有计算机名的 ping。

谢谢!

4

2 回答 2

0

我通过使用 nbtstat 解决了这个问题。nbtstat 将返回与给定 IP 地址对应的 NetBios 计算机名称。

例如:nbtstat -A 10.0.0.5

在 Java 中,我创建了一个循环来检查给定的 ip 是否可达。我的 Azure VPN 范围是 10.0.0.x。所以我的循环将检查 ip 10.0.0.1 直到 10.0.0.20。如果 ip 可以访问,它将查找计算机名称。如果计算机名称是我正在寻找的计算机名称,那么我有要连接的 IP 地址。我使用可达(ping)来加速这个过程。

示例代码:使用循环检查 ip 是否可达。类似于 ping:

for (byte i = 1; i <= 20; i++)
            {
                inet = InetAddress.getByAddress(new byte[] { 10, 0, 0, i });
                System.out.println("Sending Ping Request to " + inet);
                reachable = inet.isReachable(pingTimeOut);
                System.out.println(reachable ? "Host is reachable" : "Host is NOT reachable");

                if (reachable)
                {
                    System.out.println("Name resolve " + inet.getHostAddress());
                    trace = GetNameByIp(inet.getHostAddress());
                    if (trace.contains(computerName)) return "10.0.0." + Byte.toString(i);
                }
            }

检索 Netbios 名称:

        Process traceRt;
        System.out.println("nbtstat -A " + address);
        traceRt = Runtime.getRuntime().exec("nbtstat -A " + address);

        // read the output from the command
        route = convertStreamToString(traceRt.getInputStream());
于 2013-07-23T09:34:10.677 回答
0

我通过编辑我的主机文件解决了这个问题。我正在针对 WCF 服务进行测试,并将 azure webserver vm 和 azure 域控制器的 IP 地址和服务器名称添加到主机文件中。请务必以管理员身份编辑 hosts 文件。

于 2014-07-01T18:29:50.937 回答