Java 无法从Android设备使用主机名进行连接

Java 无法从Android设备使用主机名进行连接,java,android,linux,sockets,Java,Android,Linux,Sockets,我正在尝试使用TCP协议从android设备连接到linux PC。 两个设备都在同一网络上 当我在同一网络上的另一台PC上使用这样一个简单的java代码时,它就工作了,我得到了一个输出 class Server { public static void main ( String[] args ) throws IOException { String hostname = "MY_COMPUTER_NAME"; try { InetAddress

我正在尝试使用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以进行调试。当我用路由器设置中可以看到的实际IP替换我的\u计算机\u名称时,一切正常,套接字被创建,文本视图被更新

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

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

我认为Android在NetBIOS名称方面有问题,但可以查找在DNS服务器上注册的名称。请参见此处:

Hmmm,当我试图使用该代码和库获取地址时,应用程序崩溃。我不知道如何设置DNS主机名。