Подключайтесь через Wi-Fi, используя имя компьютера вместо IP-адреса - PullRequest
1 голос
/ 08 января 2012

Я подключил два компьютера через Wi-Fi, и я использую IP-адрес, чтобы сделать это, как показано в примере ниже:

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

Мой IP-адрес регулярно меняется, так что это хлопотно для меня, и я хочу использовать имя компьютера вместо этого. Как это возможно?

EDIT:

Из ответов ниже я смог сделать это на двух ПК:

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

и это

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

но когда я применяю его в своем приложении для Android, оно не работает. Есть ли специальный способ сделать это в Android?

1 Ответ

0 голосов
/ 08 января 2012

Вместо 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);
           }

    }

}
...