【问题标题】:Connect via Wi-Fi using computer name instead of IP address使用计算机名称而不是 IP 地址通过 Wi-Fi 连接
【发布时间】:2012-02-05 07:19:54
【问题描述】:

我一直通过 Wi-Fi 连接两台电脑,并且我正在使用 IP 地址来执行此操作,如下例所示:

String ipAddress = "192.168.X.X";
Socket socket = new Socket(ipAddress, 8888);

我的 IP 地址经常更改,所以这对我来说很麻烦,我想使用计算机的名称而不是这个。这怎么可能?

编辑:

从下面的回复中,我可以在两台电脑上做到这一点:

String ipAddress = "somename";
Socket socket = new Socket(InetAddress.getByName(ipAddress), 12345);

还有这个

String ipAddress = "somename";
Socket socket = new Socket(ipAddress, 8888);

但是当我将它应用到我的 Android 应用程序时,它不起作用。在 Android 中有没有特殊的方法可以做到这一点?

【问题讨论】:

  • 您必须有一个 Java 可以使用的名称解析系统。如果是 Windows,也许 Android 有 WINS 分辨率?尝试使用 InetAddress'.getByName("themachinenamehere")

标签: java android ip-address


【解决方案1】:

您也可以使用主机名来代替 IP 地址。例如,如果您的服务器具有主机名“foo.bar.com”,您可以使用

Socket socket = new Socket("foo.bar.com", port);

在您的本地网络中,您应该能够使用本地电脑的主机名。我刚刚写了一个成功连接到我的打印服务器的小例子:

import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;


public class SocketTester {

    /**
     * @param args
     * @throws IOException 
     * @throws UnknownHostException 
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
        //Create socket connection
           try{
             Socket socket = new Socket("printserver", 23);
             BufferedReader in = new BufferedReader(new InputStreamReader(
                        socket.getInputStream()));
             try{
                 while(in.read()!=-1){
                     String line = in.readLine();
                     System.out.println("Text received: " + line);
                 }
               } catch (IOException e){
                 System.out.println("Read failed");
                 System.exit(1);
               }

           } catch (UnknownHostException e) {
             System.out.println("Unknown host: kq6py");
             System.exit(1);
           } catch  (IOException e) {
             System.out.println("No I/O");
             System.exit(1);
           }

    }

}

【讨论】:

  • 这并不总是有效。我不记得确切的时间和条件是什么,但我绝对记得它不起作用。我认为它取决于操作系统。
  • 我已经尝试过了,并且能够在我的 PC 上成功完成,但它在我的 Android 设备上不起作用。它强制关闭。
猜你喜欢
  • 2015-04-27
  • 2011-10-15
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 2018-08-13
  • 2011-06-28
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多