我一直通过Wi-Fi连接两台电脑,而我正在使用IP地址来执行此操作,如下例所示:
String ipAddress = "192.168.X.X";
Socket socket = new Socket(ipAddress, 8888);
我的IP地址经常更改,所以这对我来说很麻烦,我想使用计算机的名称而不是这个。这怎么可能?
编辑:
从下面的回复中,我能够在两台PC上这样做:
String ipAddress = "somename";
Socket socket = new Socket(InetAddress.getByName(ipAddress), 12345);
和这个
String ipAddress = "somename";
Socket socket = new Socket(ipAddress, 8888);
但是当我在我的Android应用上应用它时,它不起作用。在Android中有没有特殊的方法呢?
答案 0 :(得分:0)
您也可以使用主机名代替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);
}
}
}