【问题标题】:Cannot connect using hostname from an Android device无法使用 Android 设备上的主机名进行连接
【发布时间】:2013-11-09 09:34:50
【问题描述】:

我正在尝试使用 TCP 协议从我的 android 设备连接到 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

当我使用此代码连接到我的 android 手机上的套接字时,它不起作用。处理程序还更新另一个 TextView 以进行调试。当我将 MY_COMPUTER_NAME 替换为在路由器设置中可以看到的实际 IP 时,一切正常,创建了套接字并更新了 TextView。

//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();
            }
        }           
    }

可能是什么问题,我错过了什么?谢谢。

【问题讨论】:

    标签: java android linux sockets


    【解决方案1】:

    我认为 Android 在 NetBIOS 名称方面存在问题,但可以查找在 DNS 服务器上注册的名称。看这里:Host is unresolved in LAN

    【讨论】:

    • 嗯,当我尝试使用该代码和库获取地址时,应用程序崩溃了。而且我不知道如何设置 DNS 主机名。
    猜你喜欢
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2014-01-14
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多