无法使用 Android 设备的主机名连接

3
我正在尝试使用TCP协议从我的安卓设备连接到一台Linux PC。两台设备都在同一个网络上。
当我在同一网络上的另一台PC上使用以下简单的Java代码时,它可以正常工作并输出结果。
class Server {
public static void main ( String[] args ) throws IOException 
  {
    String hostname = "MY_COMPUTER_NAME";

    try 
    {
      InetAddress ipaddress = InetAddress.getByName(hostname);
      System.out.println("IP address: " + ipaddress.getHostAddress());
    }
    catch ( UnknownHostException e )
    {
      System.out.println("Could not find IP address for: " + hostname);
    }
  }
}

输出:

IP address: 192.168.1.3

当我使用这段代码连接到我的安卓手机上的套接字时,它就是不起作用。处理程序还更新了另一个文本视图以进行调试。当我将MY_COMPUTER_NAME替换为我在路由器设置中看到的实际IP地址时,一切都正常,套接字被创建并更新了文本视图。
//Some variables
String hostname = "MY_COMPUTER_NAME";
private static final int SERVERPORT = 5001;
InetAddress ipaddress = null;
String address = null;

@Override
    public void run() {
        while(true){
            try {
                ipaddress = InetAddress.getByName(hostname);
                address = ipaddress.getHostAddress();
                socket = new Socket(ipaddress, SERVERPORT);

                myHandler.post(updateRunnable);

                break;
            } catch (UnknownHostException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }           
    }

什么可能是问题,我缺少了什么?谢谢。
1个回答

0

我觉得Android在处理NetBIOS名称方面存在问题,但可以查找在DNS服务器上注册的名称。请参考这里:局域网中主机未解析


哦,当我尝试使用那段代码和库获取地址时,应用程序就会崩溃。而且我不知道如何设置DNS主机名。 - Algirdyz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接