Java 使用计算机名而不是IP地址通过Wi-Fi连接
我已经通过Wi-Fi连接了两台电脑,我正在使用IP地址进行连接,如以下示例所示:Java 使用计算机名而不是IP地址通过Wi-Fi连接,java,android,ip-address,Java,Android,Ip Address,我已经通过Wi-Fi连接了两台电脑,我正在使用IP地址进行连接,如以下示例所示: String ipAddress = "192.168.X.X"; Socket socket = new Socket(ipAddress, 8888); 我的IP地址经常变化,所以这对我来说是个麻烦,我想用计算机的名称来代替这个。这怎么可能 编辑: 从下面的回复中,我可以在两台电脑上这样做: String ipAddress = "somename"; Socket socket = new Socket(I
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应用程序上时,它就不起作用了。在安卓系统中有没有一种特殊的方法来实现这一点?您也可以使用主机名来代替IP地址。例如,如果您的服务器具有主机名“foo.bar.com”,则可以使用
Socket socket = new Socket("foo.bar.com", port);
在本地网络中,您应该能够使用本地pc的主机名。我刚刚编写了一个成功连接到printserver的小示例:
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);
}
}
}
您必须有一个名称解析系统,Java可以使用它。如果是Windows,也许安卓已经赢得了分辨率?尝试使用InetAddress'
.getByName(“TheMachineName”)
这并不总是有效的。我记不清确切的时间和条件是什么,但我肯定记得它不起作用。我认为它依赖于操作系统。我已经尝试过了,并且能够在我的电脑上成功地做到这一点,但它在我的Android设备上不起作用。它将强制关闭。